KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
Lend money to a bad debtor and he will hate you.
FrontPage › LaTeXBoxes
TeX에서 박스를 취급하는 방법에 대해서는 Box를 보라. 여기서는 LaTeX에서 쓰이는 박스 처리 방법을 요약한다.

목차

1 기본적인 박스들
1.1 makebox, mbox
1.2 framebox, fbox
1.3 savebox, sbox, usebox
1.4 rule과 strut
1.5 lrbox 환경
1.6 parbox
1.7 minipage 환경
2 Fancy Boxes (fancybox 패키지)
2.1 boxput
2.2 fancypage
2.3 flushleft, flushright, center, itemize, enumerate, description에 테두리
2.4 verbatim box
3 Break Box
4 질문과 답변, TIP
4.1 minipage에 frame을 칠 수는 없는가?
4.2 가변폭 framebox를 사용하는 방법
5 그림(picture) 환경의 박스

1 기본적인 박스들

1.1 makebox, mbox

\makebox[<width>][<pos>]{<obj>}

<width> 값을 주지 않으면 <pos>는 없어야 한다. <pos>는 다음 네 가지가 있다.
지시자 의미
l 왼쪽정렬
r 오른쪽정렬
c 가운데정렬
s stretched

\makebox[2\width][l]{That's all folks!}
\makebox[2\width][r]{That's all folks!}
\makebox[2\width][c]{That's all folks!}
\makebox[2\width][s]{That's all folks!}

  • \makebox 명령이 불리면 자동적으로 \width, \height, \depth, \totalheight 값이 설정된다.

makeboxtest.jpg

\mbox\makebox의 약형이다. 옵션없이 \mbox{obj} 형식으로 쓰며 이것은 \makebox{obj}의 약형 표기이다. \mbox는 문서 기본 폰트로(즉 텍스트 모드로) 재설정되므로, math mode에서 약간의 텍스트를 쓰고 싶을 때 사용할 수 있다.

1.2 framebox, fbox

\framebox\makebox와 같고 박스 주변을 프레임으로 둘러싸는 것만 다르다. \fbox\framebox의 약형으로서 옵션없이 \fbox{obj} 형식으로 쓰인다.

  • frame line의 두께는 \fboxrule
  • 텍스트와 프레임 사이의 간격은 \fboxsep
  • 위의 두 값은 "길이값"(see 길이변수)이므로 \setlength, \addtolength 등으로 설정한다.

\framebox[2\width][l]{That's all folks!}
\framebox[2\width][r]{That's all folks!}
\framebox[2\width][c]{That's all folks!}
\framebox[2\width][s]{That's all folks!}

frameboxtest.jpg

1.3 savebox, sbox, usebox

박스 변수는 다음과 같이 선언한다.
\newsavebox{\cmd}

그 다음 이 변수에 박스의 내용을 할당한다.
\savebox{\cmd}[_width_][_pos_]{_obj_}

\newsavebox{\MyBox}
\savebox{\MyBox}[2\width][c]{That's all folks!}
\fbox{\usebox{\MyBox}}\usebox{\MyBox}

_width_와 _pos_는 \makebox\framebox의 경우와 동일하다. \sbox 명령은 옵션없이 \savebox를 줄여쓰는 명령이다.


1.4 rule과 strut

See Box.
Compare \fbox{this} with \fbox{\rule[-.5cm]{0mm}{1cm}this}.


1.5 lrbox 환경

\newsavebox{\temp}
\begin{lrbox}{\temp}
The characters \verb|~ # $ % ^ & _|
are special.
\end{lrbox}
\usebox{\temp}


  • verbatim 텍스트를 포함할 수 있다.
  • 박스 안에서는 행나눔이 된다.
  • lrbox의 앞뒤 공백은 모두 무시된다.
  • 한 문단 이상이 올 수 없다.

1.6 parbox

\parbox[_pos_][_height_][_inner_pos_]{*width*}{*text*}

문단(paragraph) 전체를 하나의 박스로 만드는 명령이다. 박스는 반드시 *width*를 지정해야 한다. 위치지정자(_pos_)는 다음과 같다.
위치지시자 의미
t 박스의 첫 줄이 baseline에 정렬된다.
b 박스의 마지막 줄이 baseline에 정렬된다.
c 베이스라인을 기준으로 세로로 중앙에 정렬된다.
s c와 비슷하다.

I \parbox[t]{10pt}{t\\h\\i\\n\\k}
\parbox[b]{10pt}{M\\a\\r\\s} is
\parbox[c]{10pt}{c\\a\\l\\l\\e\\d}
\parbox[s]{35pt}{the Red Planet.}

I \fbox{\parbox[t]{10pt}{t\\h\\i\\n\\k}}
\fbox{\parbox[b]{10pt}{M\\a\\r\\s}} is
\fbox{\parbox[c]{10pt}{c\\a\\l\\l\\e\\d}}
\fbox{\parbox[s]{35pt}{the Red Planet.}}
_inner_pos_란, 위의 _pos_와 동일한 위치지정자를 사용하되, 박스 자체의 베이스라인 기준 위치가 아니라 박스 안에서 텍스트나 obj가 놓일 위치를 지시하는 것이다. _height_ 값을 준 경우에만 의미가 있다.

\parbox[t][20pt][b]{10pt}{T}

\fbox{\parbox[t][20pt][b]{10pt}{T}}
parbox 안에는 verbatim이 올 수 없다.

1.7 minipage 환경

minipage는 \textwidth\columnwidth를 지정하여 하나의 작은 페이지처럼 다룰 수 있는 박스를 만든다. 따라서 각주를 붙일 수 있다는 중요한 기능을 가진다. parbox와 minipage는 모두 한 페이지 안의 박스이기 때문에 페이지가 나누어지는 곳에서 박스도 함께 나누어지지 않는다. 유달리 박스를 많이 쓰는 우리나라의 글쓰기 관행에 비추어 보자면 minipage가 페이지 나눔이 되지 않는 것이 불편하거나 불만스러울 수 있겠지만, page란 가위로 오리지 않는 한 잘라지지 않는 것이므로 :) minipage가 잘라지지 않는 것은 당연한 일이다.

\begin{minipage}[_pos_][_height_][_inner_pos_]{*width*}
  text of minipage
\end{minipage}

옵션등의 의미는 parbox와 같다.

\begin{minipage}{150pt}
parbox와 minipage는 모두 한 페이지 안의 박스이기 때문에 페이지가 나누어지는 곳에서 박스도 함께 나누어지지 않는다.
유달리 박스를 많이 쓰는 우리나라의 글쓰기 관행에 비추어 보자면 
minipage가 페이지 나눔이 되지 않는 것이 불편하거나 불만스러울 수 있겠지만, page란 가위로 오리지 않는 한 
잘라지지 않는 것이므로\footnote{농담입니다.} minipage가 잘라지지 않는 것은 당연한 일이다.
\end{minipage}

\begin{minipage}{300pt}
parbox와 minipage는 모두 한 페이지 안의 박스이기 때문에 페이지가 나누어지는 곳에서 박스도 함께 나누어지지 않는다.
유달리 박스를 많이 쓰는 우리나라의 글쓰기 관행에 비추어 보자면 
minipage가 페이지 나눔이 되지 않는 것이 불편하거나 불만스러울 수 있겠지만, page란 가위로 오리지 않는 한 
잘라지지 않는 것이므로\footnote{농담입니다.} minipage가 잘라지지 않는 것은 당연한 일이다.
\end{minipage}
<!> minipage를 이용한 각주 붙이기는 MinipageFootnote를 참고하라.

2 Fancy Boxes (fancybox 패키지)

Timothy Van Zandt 씨의 fancybox 패키지는 다음과 같은 박스를 제공한다.
\shadowbox{Shadow box}
\doublebox{Double box}
\ovalbox{Oval box}
\Ovalbox{Alternative oval box}

ovalboxboxes.jpg

2.1 boxput

\boxput 명령은 지정된 특정 위치에 둘 이상의 박스를 겹쳐둘 수 있게 한다. \boxput은 첫번째 박스를 후면에 그리고, \boxput*은 첫번째 박스를 전면에 그린다.

DeleteMe. 보충할 것.

2.2 fancypage

이 명령은 페이지 전체에 박스를 그린다. 한 페이지만 그리려면 \thisfancypage를 쓴다. 이 명령은 두 개의 인수를 가지는데, 첫번째 것은 text body 부분에 그릴 frame이고, 두번째 것은 header/footer를 포함한 전체 페이지에 그릴 frame이다.
\usepackage{fancybox} %fancybox package의 일부이므로 preemble에 넣어 주어야 한다. 
% 일반적으로 인용되는 예제
\thisfancypage % 박스 두개를 그리는 예제
  {\setlength{\fboxsep}{8pt} \setlength{\shadowsize}{8pt} \shadowbox} % text body부분에 shadow box
  {\setlength{\fboxsep}{8pt} \Ovalbox} % header/footer외곽에 ovalbox를 그림 
% 가장 단순하게 header/footer를 제외한 text body영역에 box를 그리려면 아래와 같이 입력하면 된다.
\thisfancypage{\fbox}{}

2.3 flushleft, flushright, center, itemize, enumerate, description에 테두리

각각에 해당하는 다음 환경을 쓸 수 있다.
  • Bflushleft
  • Bflushright
  • Bcenter
  • Bitemize
  • Benumerate
  • Bdescription

2.4 verbatim box

fancybox 패키지를 이용하면 verbatim 텍스트에 테두리를 칠 수 있다. VerbatimBoxes를 참고하라.

3 Break Box

페이지가 나누어지는 박스에 대한 것은 BreakBoxes를 보라.

4 질문과 답변, TIP

4.1 minipage에 frame을 칠 수는 없는가?

  1. fancybox의 Sbox 환경을 이용한다.
    \newenvironment{fminipage}%
     {\begin{Sbox}\begin{minipage}}
     {\end{minipage}\end{Sbox}\fbox{TheSbox}}
    
    \begin{fminipage}{200pt}
    This is a framed minipage\footnote{not a parbox!}.
    We can use this framed minipage with fancybox package.
    \end{fminipage}
    
  2. minipage를 lrbox 환경으로 save박스하였다가 flush하는 방법.
    \newsavebox{\mysavebox}
    \newenvironment{myframedminipage}%
      {\begin{lrbox}{\mysavebox}\begin{minipage}{\textwidth}}%
      {%
         \end{minipage}\end{lrbox}\fbox{\usebox{\mysavebox}}%
      }
    
    \begin{myframedminipage}
    우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
    우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
    \end{myframedminipage}
    
    \newsavebox{\mysavebox}
\newenvironment{myframedminipage}%
  {\begin{lrbox}{\mysavebox}\begin{minipage}{.5\textwidth}}%
  {\end{minipage}\end{lrbox}\fbox{\usebox{\mysavebox}}%
}
\begin{myframedminipage}
우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
\end{myframedminipage}
  3. framed 패키지의 framed 환경(이것은 페이지가 나누어지는 것이므로 BreakBoxes를 참고할 것).
    \usepackage{framed}
    
    \begin{framed}
    우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
    우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
    \end{framed}
    
  4. 환경 내의 텍스트를 verbatim 텍스트로 외부 저장하였다가 불러오는 방법.
    \usepackage{verbatim}
    \makeatletter
    \newwrite\myverb@out
    \def\outfilename{tmpout.tmp}
    \newenvironment{mfminpage}%
    	{\begingroup\@bsphack
    	 \immediate\openout\myverb@out\outfilename
    	 \let\do\@makeother\dospecials\catcode`\^^M\active
    	 \def\verbatim@processline{%
    	 	\immediate\write\myverb@out{\the\verbatim@line}}%
    	 \verbatim@start}%
    	{\immediate\closeout\myverb@out\@esphack\endgroup\fbox{\minipage{\textwidth}\input
             \outfilename\endminipage}\ignorespacesafterend}
    \makeatother
    
    \begin{mfminpage}
    우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
    우리집 강아지는 복슬강아지 학교갔다 돌아오면 멍멍멍 꼬리치며 반갑다고 멍멍멍.
    \end{mfminpage}
    

4.2 가변폭 framebox를 사용하는 방법

  1. moreverb 패키지의 boxedverbatim 환경은 verbatim 텍스트를 식자하면서 가장 긴 줄에 width를 맞춘다.
  2. KTUGOperate:9455 pbox.sty
    %%------example-------
    \documentclass{article}
    \usepackage{hfont}
    \usepackage{pbox}
    
    \newcommand\myflexwidthbox[1]{%
    	\fbox{\pbox{\textwidth}{#1}}%
    }
    	
    \begin{document}
    
    \myflexwidthbox{
    가나다라 \\
    테스트 \\
    알라뷰 \\
    \textcopyright \texttrademark
    }
    
    \myflexwidthbox{
    가나다라 테스트 \\
    알라뷰 \\
    \textcopyright \texttrademark
    }
    
    \end{document}
    
  3. varwidth.sty
    %%--------- sample of varwidth ----
    \documentclass{article}
    \usepackage{hfont}
    \usepackage{varwidth}
    
    \begin{document}
    
    \fbox{\begin{varwidth}{.5\textwidth}
    가나다라 \\
    테스트 \\
    알라뷰
    \end{varwidth}}
    
    \fbox{\begin{varwidth}{.5\textwidth}
    가나다라 테스트 \\
    알라뷰
    \end{varwidth}}
    
    \end{document}
    

5 그림(picture) 환경의 박스


^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-03-18 00:31:41
Processing time 0.0558 sec