KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
Your own qualities will help prevent your advancement in the world.
FrontPage › 나열환경

목차

1 기정의 나열환경(Predefined List Environments)
1.1 enumerate
1.1.1 nesting과 enumerate label
1.1.2 enumerate의 label 바꾸기
1.2 itemize
1.3 description
1.3.1 description 환경과 관련된 문제
1.4 그밖의 나열환경
1.4.1 verse
1.4.2 quote와 quotation 환경
1.5 thebibliography
1.6 theorem, \newtheorem
2 나열환경의 구성요소
3 나열환경과 관련된 패키지
3.1 enumerate 패키지
3.2 enumitem 패키지
3.3 expdlist 패키지
3.4 mdwlist 패키지
3.5 multienum 패키지
3.6 paralist 패키지
3.7 poemscol 패키지
3.8 verse 패키지
4 리스트 환경 설정하기
4.1 list 환경에서 item 사이의 간격을 없애는 방법
4.2 list 환경을 이용하여 문단 모양을 바꾸는 방법
5 \list\trivlist
5.1 list
5.2 trivlist

1 기정의 나열환경(Predefined List Environments)


LaTeX에는 미리 정의된 다음과 같은 나열환경들이 있다.

1.1 enumerate

다음과 같이 일련번호 숫자 레이블이 붙는 나열에 쓰인다.

\begin{enumerate}
\item First item
\item Second item
\item Third item
\end{enumerate}

위의 결과는 다음 코드로 작성된 것이다.

\begin{enumerate}
\item First item
\item Second item
\item Third item
\end{enumerate}

1.1.1 nesting과 enumerate label

list 환경은 가지치기(nesting)가 가능하다. 즉 enumerate 안에 다시 enumerate을 쓸 수 있다.

\begin{enumerate}
\item First Level First Item
\begin{enumerate}
\item Second Level First Item
\item Second Level Second Item
\end{enumerate}
\item First Level Second Item
\end{enumerate}

\begin{enumerate}
\item First Level First Item
 \begin{enumerate}
 \item Second Level First Item
 \item Second Level Second Item
 \end{enumerate}
\item First Level Second Item
\end{enumerate}

enumerate 환경의 label 기본값은 nesting된 순서에 따라서 다음과 같다. 이 각각을 \labelenumi, \labelenumii 등으로 부르고, 거기에 부여된 숫자값(번호)을 \theenumi, \theenumii라 부른다. 기정값은 다음과 같다.
  1.
    (a)
       i.
          A.

1.1.2 enumerate의 label 바꾸기

이 설정을 바꾸려면 \theenum<i,ii,iii...>\labelenum<i,ii,iii...> 를 바꾸면 된다. 예를 들어서
\renewcommand{\theenumi}{\Roman{enumi}}
\renewcommand{\labelenimii}{\S\theenumii.}
\begin{enumerate}
\item First level enum.
 \begin{enumerate}
   \item second level enum.
 \end{enumerate}
\end{enumerate}
위의 코드는 다음과 같은 결과를 가져온다.

\renewcommand{\theenumi}{\Roman{enumi}}
\renewcommand{\labelenumii}{\S\theenumii.}
\begin{enumerate}
\item First level enum.
 \begin{enumerate}
   \item second level enum.
 \end{enumerate}
\end{enumerate}
일련번호를 매겨가다가 어떤 한 항목에 대해서만 별도의 기호문자를 붙이고 싶을 때는 \item[기호문자]와 같이 나열해주면 된다.
\begin{enumerate}
\item I love KTUG
\item you love KTUG
\item[$+$] Who doesn't love KTUG?
\item We all love KTUG
\end{enumerate}

\begin{enumerate}
\item I love KTUG
\item you love KTUG
\item[$+$] Who doesn't love KTUG?
\item We all love KTUG
\end{enumerate}
(!) enumerate label을 바꾸는 가장 쉬운 방법은 enumerate 또는 enumitem 패키지를 사용하는 것이다. 아래 각 패키지 사용법을 참고하라.

1.2 itemize

숫자 대신 기호문자(bullet)가 label로 붙는 나열환경이다.

\begin{itemize}
 \item 계약 기간 재연장 조건 계약 기간 만료  1 개월 전 계약 연장을 통보하지 않으면 계약 기간 만료 후 자동으로 계약이 해지된다.
 \begin{itemize}
 \item 계약 기간 재연장 조건 계약 기간 만료  1 개월 전 계약 연장을 통보하지 않으면 계약 기간 만료 후 자동으로 계약이 해지된다.
 \item 유효한 계약서로 인정되는 서명 대표이사가 서명한 계약서만이 유효하다.
 \item 이전 계약서에 대한 최근 계약서의 영향력  가장 최근의 계약만이 유효하다.
 \end{itemize}
 \item 유효한 계약서로 인정되는 서명 대표이사가 서명한 계약서만이 유효하다.
 \item 이전 계약서에 대한 최근 계약서의 영향력  가장 최근의 계약만이 유효하다.
\end{itemize}
itemizeenv.gif

itemize 환경을 겹쳐쓰면 기호표지는 다음 순서로 바뀌도록 되어 있는 것이 기본값이다.

\begin{itemize}
\item First Level Itemize
 \begin{itemize}
 \item Second Level Itemize
  \begin{itemize}
  \item Third Level Itemize
   \begin{itemize}
   \item Fourth Level Itemize
   \end{itemize}
  \end{itemize}
 \end{itemize}
\end{itemize}
이 기호표지를 바꾸려면 \labelitemi, \labelitemii, ... 를 renewcommand해주면 된다.

1.3 description

description(설명조) 환경에서는 조항을 \item 명령어의 선택 인수(argument)로 처리한다. \item 명령어는 \item[조항] 으로 쓴다.
  \begin{description}
     \item[강철]  몸과 마음이 단단하고 굳셈을 비유하여 이르는 말
     \item[강태공] 낚시질을 유난히 좋아하는 사람을 비유하여 이르는 말
     \item[강행군]  어떤 일을 기일 안에 기어이 끝내려고 무리하게 함을 비유하는 말
  \end{description}

\noindent\textbf{description 환경}
\begin{description}
  \item[강철]  몸과 마음이 단단하고 굳셈을 비유하여 이르는 말
  \item[강태공] 낚시질을 유난히 좋아하는 사람을 비유하여 이르는 말
  \item[강행군]  어떤 일을 기일 안에 기어이 끝내려고 무리하게 함을 비유하는 말 
\end{description}
\begin{description}
 \item[계약 기간 재연장 조건] 계약 기간 만료  1 개월 전 계약 연장을 통보하지 않으면 계약 기간 만료 후 자동으로 계약이 해지된다.
 \item[유효한 계약서로 인정되는 서명] 대표이사가 서명한 계약서만이 유효하다. 가장 최근의 계약만이 유효하다.
\end{description}

descriptionenv.gif

1.3.1 description 환경과 관련된 문제

description 환경은 길지 않은 label을 가진 경우에 잘 동작한다. 그러나 label이 지나치게 길거나 짧아지는 경우에는 뜻한 대로 동작하지 않는 경우가 있다.

'Q1.' label이 길어서 설명문을 레이블 다음 줄에 두고 싶은데 no line here to end라는 LaTeX 에러가 뜹니다.

'A1.'
\begin{description}
\item[긴 레이블 텍스트] \\
 긴 레이블 텍스트에 붙을 설명문
\end{description}
이 경우에는 에러가 만들어집니다. 해결방법은 expdlist 패키지의 \breaklabel 명령을 쓰거나, 아니면 mdwlist 패키지가 제공하는 긴 레이블 디스크립션 환경을 이용하는 것이 좋을 것입니다. 간편하기로는 expdlist의 명령이 낫습니다만, mdwlist는 더 다양한 방법으로 description과 유사한 환경(basedescript)을 통제할 수 있도록 해줍니다. See MdwListPackage
\usepackage{mdwlist}

\begin{basedescript}{\desclabelstyle{\nextlinelabel}}
\item[긴 레이블 텍스트] 긴 레이블 텍스트에 붙을 설명문
\end{basedescript}

1.4 그밖의 나열환경

그리고, 다음과 같은 환경도 실제로는 나열환경을 이용하는 것이다.

verse-quote.gif

1.4.1 verse

행렬 구분은 \\으로, 연 구분은 한 줄 이상의 빈 줄로 한다. \\*명령어의 기능은 \\의 기능과 비슷하지만, \\*를 사용했을 때 그 위치에서 새로운 페이지로 넘어가는 것을 억제한다.

시/시조 typesetting할 때, verse환경만으로는 부족함 많으므로 verse나 poemscol 패키지와 함께 사용하도록 한다.

1.4.2 quote와 quotation 환경

이 환경들은 글을 인용할 때 사용한다. quote은 짧은 글을, quotation는 긴 글을 인용할 때 사용한다. 즉, quote는 언제나 한 문단만을 처리하지만 quotation은 여러 문단을 처리한다.
    \begin{quote}
    계약 기간 재연장 조건은 계약 기간 만료시  1 개월 전에 계약 연장을 통보하지
    않으면, 계약 기간 만료 후 자동으로 계약이 해재된다. 또, 대표이사가 서명한
    계약서만이 유효하다.
    \end{quote}

1.5 thebibliography

thebibliography 환경은 특별한 나열환경이다. 예컨대 \item 대신 \bibitem을 쓴다. 더 자세한 것은 참고문헌만들기BibTeX을 볼 것.

1.6 theorem, \newtheorem

수학의 정리 또는 정리류(theorm-like environments)를 나타낼 때 쓰는 theorem도 일종의 list 환경이다. 정리류를 사용하는 방법에 대해서는 Uploads:amsthm.pdf를 참고하라.

2 나열환경의 구성요소

liststructure.jpg

위의 그림에서 partoseppartopsep의 잘못이다. partopsep이 추가되는 경우는 나열환경이 이전의 텍스트와 이어지지 않고 "새로운 문단으로" 시작할 때이다. 이전 텍스트와 문단구분 없이 이어지면 partopsep이 추가되지 않는다. 나열환경 뒤에 오는 텍스트와의 사이에도 마찬가지이다.

3 나열환경과 관련된 패키지

3.1 enumerate 패키지


See also KTUGOperate:2508.

(./) enumerate 환경에서 enumerate label 형식을 직접 지정할 수 있다. 그리고 enumerate 환경을 거의 모든 환경 속에서 쓸 수 있다.
\begin{enumerate}[A.]
와 같이 맨 처음 item의 방식(공통으로 쓰는 문자열과 번호 시스템)을 [ ] 속에 정해 주면 나머지 item은 거기에 따라 간다. See KTUGOperate:3364.

(./) [ ] 속에 A, a, I, i 또는 1을 넣으면 각각 명령어 \Alph, \alph, \Roman, \roman 또는 \arabic에 해당하는 번호 시스템이 붙는다. 그래서 A, a, I, i 또는 1가 공통으로 들어가는 문자열에 들어가게 되면 그 문자열을 활짱묶음표 { }로 묶어 주어야 한다(아래 그림 1 참조).

(./) enumerate 환경 속에 또 enumerate 환경을 여러 겹으로 쓸 수 있다. 이 때는 자동 들여쓰기가 된다(아래 그림 1 참조).

http://www.ktug.or.kr/jsboard/data/operate/files/20070520064051/enumerate_example.jpg

그림 1: [http]enumerate.pdf의 1쪽에서 스샷

사용 예
\begin{enumerate}[제 1 항]
 \item 계약 기간 만료  1 개월 전 계약 연장을 통보하지 않으면 계약 기간 만료 후
 자동으로 계약이 해지된다.
 \item 대표이사가 서명한 계약서만이 유효하다.
 \item 가장 최근의 계약만이 유효하다.
\end{enumerate}
enumeratepackage.gif

3.2 enumitem 패키지


enumerate 환경에서 topsep 등의 간격의 조정이 쉽지 않았습니다만 enumitem 패키지를 이용하면 이를 쉽게 할 수 있군요. 사용법은 어렵지 않으니 매뉴얼을 참조하시기 바랍니다.

Hangul-ucs에서 enumitem label

Hangul-ucs의 contrib 스타일로 dhucs-fixenumitem.sty라는 작은 스타일이 있습니다. cf. KTUGOperate:15054
\usepackage{enumitem}
\usepackage{dhucs-fixenumitem}% enumitem 이후에 로드합니다.

\begin{document}
\begin{enumerate}[label={\bfseries\jaso*)}]
\item 가나다
\item 라마바
\end{enumerate}
\gana, \jaso, \ogana, \pgana, \onum, \pnum, \ojaso, \pjaso, \hnum 등을 지정할 수 있습니다.

3.3 expdlist 패키지


3.4 mdwlist 패키지


* Item의 표제어(Label)를 왼쪽 여백에
description1.jpg

3.5 multienum 패키지

3.6 paralist 패키지

cf. KTUGOperate:8259 한 단락 안에서 목록을 나열한다.
\begin{inparaenum}
 \item 계약 기간 만료  1 개월 전 계약 연장을 통보하지 않으면 계약 기간 만료 후 자동으로 계약이 해지된다.
 \item 대표이사가 서명한 계약서만이 유효하다.
 \item 가장 최근의 계약만이 유효하다.
\end{inparaenum}
paralist-inparaenum.gif

이 환경 이외에도 paralist 꾸러미에는 아주 편리하고 유용한 환경들이 많이 정의되어 있다.

3.7 poemscol 패키지

3.8 verse 패키지

4 리스트 환경 설정하기

4.1 list 환경에서 item 사이의 간격을 없애는 방법

  1. \itemsep-\parsep 만큼 설정하여 간격을 기본 행간으로 맞추는 방법
    \begin{enumerate}\setlength\itemsep{-\parsep}
    \item ...
    \end{enumerate}
    


  2. mdwlist 패키지를 이용하여 compactlist를 만드는 방법
    \usepackage{mdwlist}  % preamble
    \makecompactlist{enum**}{enumerate}
    
    \begin{enum**}
    \item ...
    \end{enum**}
    


  3. enumitem 패키지를 이용하는 방법

4.2 list 환경을 이용하여 문단 모양을 바꾸는 방법

5 \list\trivlist

5.1 list

모든 나열환경은 list라는 내부 환경으로 만들어진다. 이 환경으로 작성되는 대표적인 환경을 살펴보면, quote, quotation, verse, itemize, enumerate, description, thebibliography 등이 있다. 예컨대, quote 환경은 다음과 같이 정의된다.
\newenvironment{quote}
               {\begin{list}{}{\rightmargin\leftmargin}%
                \item\relax}
               {\end{list}}

이 환경의 구문은 다음과 같다.
\begin{list}{text1}{dec-list} text2 \end{list}
여기서 text1\item 명령이 주어졌을 때 무엇을 표시할 것인가를 지정하는 것이다. 위의 quote 정의에서는 비어 있으므로 아무것도 표시하지 않는다. dec-list라는 것은 list 환경의 각 구성요소별 설정값을 정하는 부분이다. 위의 그림을 보면 \topsep, \leftmargin, \rightmargin 등 각 길이변수들이 어떤 의미를 갖는지 알 수 있을 것이다. 기정값은 \@listi, \@listii 등의 형식으로 미리 주어져 있다. 여기서 i, ii는 가지치기(nesting)된 몇 번째 list환경인가에 따라 결정된다. text2의 위치에는 하나 이상의 \item 명령이 반드시 와야 한다. 위의 quote 환경 정의에서는 하나의 \item을 줌으로써 추가적인 \item 없이도 문장을 식자할 수 있도록 해두었다.

-- from 《한글과 TeX》 p160

나열(list)이란 오른쪽에 여백, 왼쪽에 레이블(label)을 갖고 단락의 처음에 들여쓰기 하는 문단 형식을 말한다. 이 때 레이블은 없어도 되고 들여 쓰는 양이 0이어도 된다. 따라서 일반적으로 나열 구조라고 생각되어지지 않는 환경도 나열구조를 가지는 것으로 이해할 수 있다.

환경들여쓰기레이블(label)
quoteXX
quotationOX
verseOX
itemizeXO
enumerateXO
descriptionXO
centerXX
flushrightXX
flushleftXX
  • 결국 위에 나오는 그림(나열환경의 구성요소)을 글로 옮긴 표현에 가깝군요. 아무 생각 없이 썼는데...flushright,left도 나열환경이라니 좀 충격적이군요. 일전에 Karnes님이 이것 [http]비슷한 강좌를 해주신 것 같은데 ^^ -- hermian 2009-04-21 07:34:47

5.2 trivlist

trivlist는 특별한 list 환경이다. 내부적으로 trivlist를 이용하여 정의되는 환경으로는 flushright, flushleft, center 등이 있다.
\begin{trivlist} text \end{trivlist}

trivlist에서는 list에서와 같은 복잡한 설정 없이 단순히 \item 만을 지정하면 된다. 예컨대, \item[] 만을 주면 아무 것도 표시하지 않을 것이다. trivlist에서 \leftmargin=\rightmargin=\labelwidth=\itemindent=0pt이고, \parsep=\parskip이다. 이 환경은 사용자가 자신의 특별한 문장 배열 환경을 만들려고 할 때 쓰일 수 있다. center 환경의 정의는 다음과 같다.
\newenvironment{center}
   {\begin{trivlist}\centering\item[]}
   {\end{trivlist}}


Contributors: newbie


^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-04-21 07:47:07
Processing time 0.0786 sec