문자열 변형

graphicx 패키지에는 내용을 *상자*에 넣은 뒤 회전, 확대/축소, 반사하는 명령들이 들어 있습니다. 대상은 이미지에 한정되지 않습니다. 한 문장, 수식, tabular로 만든 표 전체처럼 상자에 들어가는 것은 무엇이든 변형할 수 있습니다. 이 페이지에서는 \rotatebox(회전), \scalebox(배율로 확대/축소), \reflectbox(좌우 반전), \resizebox(목표 치수로 확대/축소) 네 가지를 다루고, 핵심 차이인 *배율을 지정하는가* 아니면 *목표 크기를 지정하는가*를 정리합니다.

graphicx의 상자 변형 명령

이 명령들을 사용하려면 프리앰블에서 \usepackage{graphicx}를 읽습니다. 이름만 보면 이미지 전용처럼 보이지만 그렇지 않습니다. graphicx가 정의하는 변형 명령인 \rotatebox, \scalebox, \resizebox(그리고 별표형 \resizebox*), \reflectbox는 모두 같은 방식으로 동작합니다. 인수로 받은 내용을 먼저 상자에 조판한 뒤 그 상자 전체를 변형합니다. 따라서 이미지(\includegraphics)뿐 아니라 본문 구절, 수식, 표 등 상자에 들어가는 모든 재료를 변형할 수 있습니다.

핵심은 “배율로 지정하는” 명령과 “목표 치수로 지정하는” 명령의 차이입니다. \scalebox는 “원래의 0.8배”, “2배”처럼 상대 배율을 받습니다. 반면 \resizebox는 “폭 5cm”, “본문 폭 전체”처럼 절대적인 완성 치수를 받고, 그 치수에 맞는 배율을 계산합니다. \rotatebox는 각도를, \reflectbox는 좌우 반전을 담당합니다. 아래 표에 개요를 정리합니다.

명령지정하는 것효과
\rotatebox각도(도)내용을 반시계 방향으로 회전
\scalebox배율(상대)내용을 배율로 확대/축소
\reflectbox(없음)내용을 좌우로 반전
\resizebox목표 폭과 높이(절대)내용을 그 치수에 맞게 확대/축소

회전하기 - \rotatebox

\rotatebox{angle}{content}는 내용을 상자에 넣고 지정한 각도(도 단위)만큼 반시계 방향으로 돌립니다. 양수 각도는 왼쪽으로, 음수 각도는 오른쪽으로 돕니다. 예를 들어 \rotatebox{90}{...}는 내용을 90도 세워 세로쓰기처럼 만들고, \rotatebox{-90}{...}는 반대 방향으로 눕힙니다.

latex
これは \rotatebox{45}{斜めの文字} です。

This is \rotatebox{45}{slanted text}.

이 예에서는 “斜めの文字”와 “slanted text” 부분만 왼쪽 아래를 축으로 45도 들어 올려지고, 주변 본문은 수평으로 남습니다. 회전한 상자는 원래보다 높아지므로, 그 상자가 놓인 줄의 높이도 그만큼 늘어난다는 점에 주의하세요.

회전축(중심)은 선택 인수 [origin=...]으로 바꿀 수 있습니다. origin에는 l(왼쪽), r(오른쪽), c(가운데), t(위), b(아래), B(베이스라인) 중 하나나 둘을 조합해 줍니다. 예를 들어 \rotatebox[origin=c]{180}{...}상자의 중심을 축으로 180도 회전해 위아래를 뒤집습니다. 기본 축은 lB(왼쪽 베이스라인)입니다. 더 세밀한 제어가 필요하면 x=, y=로 임의의 지점을, units=로 각도 단위 자체를 바꿀 수 있습니다(units=-360은 시계 방향, units=6.283185는 라디안).

latex
\rotatebox[origin=c]{180}{さかさま}\quad\rotatebox{90}{タテ}

배율로 확대/축소와 반사 - \scalebox와 \reflectbox

\scalebox{factor}{content}는 내용을 배율로 확대/축소합니다. \scalebox{2}{...}는 2배, \scalebox{0.5}{...}는 절반입니다. 배율은 가로와 세로에 동일하게 적용되므로 모양(종횡비)은 유지됩니다.

가로와 세로를 따로 늘이거나 줄이고 싶으면 두 번째(선택) 인수에 세로 방향 배율을 줍니다. 형식은 \scalebox{h-factor}[v-factor]{content}입니다. \scalebox{1}[2]{...}는 가로는 그대로 두고 세로만 2배로 늘리며, \scalebox{0.8}[1.2]{...}는 가로 0.8배, 세로 1.2배로 변형합니다. 세로 배율을 생략하면 가로 배율과 같은 값이 되어 균일 확대/축소가 됩니다.

latex
\scalebox{2}{大きく}\quad\scalebox{0.5}{小さく}\quad\scalebox{1}[2]{縦長}

배율에는 음수 값도 지정할 수 있으며, 그 축 방향으로 반전됩니다. \scalebox{-1}[1]{...}는 가로 배율 -1, 세로 배율 1, 즉 좌우 반전(거울 문자)입니다. 자주 쓰이는 형태라 graphicx에는 전용 축약 명령 \reflectbox{content}가 있습니다. 이는 \scalebox{-1}[1]{...}와 완전히 같은 뜻입니다. 마찬가지로 \scalebox{1}[-1]{...}상하 반전이 됩니다.

latex
Able was I \reflectbox{Able was I}

이 예에서는 “Able was I” 문자열 뒤에 그 거울상, 즉 같은 문자열을 좌우로 뒤집은 것이 이어서 조판됩니다.

목표 치수에 맞추기 - \resizebox

\resizebox{width}{height}{content}는 내용을 지정한 완성 치수에 맞춰 확대/축소합니다. \scalebox가 “원래의 몇 배”라는 상대 지정인 데 비해, \resizebox는 “폭 5cm”, “높이 2cm” 같은 절대 목표 치수를 받고 LaTeX가 거기에 맞는 배율을 계산합니다. \resizebox{3cm}{2cm}{...}라면 내용이 정확히 폭 3cm, 높이 2cm가 되도록 가로세로를 독립적으로 늘이거나 줄입니다.

종횡비를 유지하면서 한쪽 치수만 정하고 싶을 때는 다른 쪽에 느낌표 !를 둡니다. !가 쓰인 방향은 지정된 쪽에서 계산된 배율을 그대로 사용합니다. 이것이 가장 흔한 형태입니다. 예를 들어 \resizebox{\textwidth}{!}{...}가로 폭을 본문 폭에 정확히 맞추고 세로는 그에 비례시킵니다. \resizebox{!}{1cm}{...}는 높이를 1cm로 하고 가로는 비례시킵니다.

치수 인수 안에서는 내용의 원래 크기를 나타내는 \width, \height, \totalheight, \depth를 사용할 수 있습니다. \resizebox{2\width}{!}{...}는 “가로를 원래의 2배로”라는 뜻입니다. 별표형 \resizebox*{width}{height}{content}는 두 번째 인수의 “높이”를 높이 + 깊이(베이스라인 아래로 내려가는 부분을 포함한 전체 높이)로 해석합니다. 별표 없는 형태는 베이스라인 위의 높이만 셉니다.

latex
% 元の幅の倍に
\resizebox{2\width}{!}{倍の幅}

% 高さ 1cm、横は比例
\resizebox{!}{1cm}{Tall}

넘치는 표 줄이기

\resizebox의 가장 흔한 실용 예는 본문 폭을 넘는 표를 줄여서 맞추는 것입니다. tabular 환경 전체를 \resizebox{\textwidth}{!}{...}로 감싸면 표 전체가 본문 폭에 딱 맞게 축소됩니다. 상자 변형 명령은 안에 무엇이 들어 있는지 가리지 않으므로 표에도 그대로 적용할 수 있습니다.

latex
\resizebox{\textwidth}{!}{%
  \begin{tabular}{lrrr}
    項目 & 第1四半期 & 第2四半期 & 第3四半期 \\
    \hline
    売上 & 120 & 138 & 151 \\
    費用 & 80 & 84 & 90 \\
  \end{tabular}%
}

하지만 이 방법은 양날의 선택입니다. \resizebox는 표 안의 글자까지 모두 함께 확대/축소하므로, 강하게 줄이면 본문보다 작은, 때로는 읽기 어려운 글자 크기가 되고 주변 본문과도 맞지 않습니다. 나중에 표의 글꼴 크기만 다시 지정해도 소용이 없습니다. 결국 상자 전체가 줄어들기 때문입니다. 따라서 먼저 열 너비 조정, \small 계열 지정, 열 삭제 등을 통해 표 자체를 폭에 맞추는 것이 정석이고, \resizebox는 마지막 수단으로 보는 편이 안전합니다. 자세한 내용은 표 레이아웃 페이지를 참조하세요.

더 높은 수준의 adjustbox

graphicx 명령은 단순하고 강력하지만, 조합하면 중첩이 깊어지기 쉽습니다. \usepackage{adjustbox}로 읽는 adjustbox 패키지는 이 기능들을 \includegraphics키=값 인터페이스로 통합한 더 높은 수준의 대안입니다. \adjustbox{key=value,...}{content} 형식으로 angle=(회전), scale=(배율), width= / height=(목표 치수), reflect(반사) 등을 한 번에 지정할 수 있으며, 같은 이름의 adjustbox 환경도 제공됩니다.

latex
\adjustbox{angle=45,scale=0.8}{まとめて変形}

\adjustbox{max width=\textwidth}{%
  \begin{tabular}{lrr} ... \end{tabular}%
}

특히 편리한 것은 max width=\textwidth(및 max totalheight= 등)입니다. 앞 절의 \resizebox{\textwidth}{!}{...}는 표가 본문 폭보다 좁아도 확대하지만, max width=넘칠 때만 줄이고, 이미 들어가면 그대로 둡니다. 따라서 들어가는 표는 본문과 같은 글자 모양을 유지하고, 너무 넓은 표만 축소됩니다. 회전, 확대/축소, 반사를 많이 쓰는 문서나 넘침 처리를 깔끔하게 끝내고 싶은 경우에는 adjustbox가 더 다루기 쉬운 선택입니다.