요약
이 수업은 표와 그림을 다루는 이 강좌의 다섯째 단원을 연다. 먼저 단원의 목적을 설명한다. 학술 저작의 데이터, 이미지, 그림을 본문만큼 분명하게 읽히고, 절이나 수식처럼 번호가 붙고 참조되며, 저자가 손으로 정하지 않아도 쪽 위에서 제자리를 찾도록 조판하는 것이다. 이어서 단원의 다섯 수업과 이들을 잇는 흐름을 소개하는데, 가장 단순한 표에서 시작해 TikZ로 그리는 첫 그림까지 이어진다. 또 앞 단원들에서 이미 아는 것으로 전제하는 내용을 밝힌다. 과학의 표와 그래프가 어디서 왔는지, 그리고 그것을 다스리는 절약의 규칙이 무엇인지를 돌아본다. 그리고 단원이 해결하는 문제를 제시한다. 워드프로세서의 습관대로 만든 표나 그림은 아무 불평 없이 컴파일되지만 읽기 힘들다는 문제이다. 끝으로 같은 도구가 실험실에도, 통계 연구에도, 역사 자료에도, 텍스트 주해에도 쓰인다는 것을 보인다.
학습 목표
- 단원 내용의 순서를 설명하고 각 수업이 다음 수업에 무엇을 보태는지 밝힌다.
- 단원이 앞 단원들에서 이미 아는 것으로 전제하는 내용을 알아보고, 필요하면 복습한다.
- 격자를 모두 그은 표가 가로줄 몇 개로 조판한 표보다 왜 읽기 어려운지 예를 들어 설명한다.
- 자기 분야에서 이 단원이 조판하는 법을 가르치는 표, 이미지, 그림을 알아본다.
시작 평가
단원을 시작하기 전에 출발점을 재어 두면 좋다. 이 평가는 자기 평가이며 점수를 매기지 않는다. 목적은 오직 학습의 방향을 잡는 데 있다. 처음 두 문항은 단원이 앞 단원들에서 이미 아는 것으로 전제하는 내용을 복습한다. 이어지는 열 문항은 두 문항씩 차례대로 단원의 다섯 수업에 대응한다. LaTeX로 표를 조판하거나 이미지를 넣어 본 적이 없는 사람이 정답을 맞히지 못하는 것은 당연하다. 맞든 틀리든 모든 답이 요점을 설명하고 그 요점을 다루는 수업을 알려 주기 때문이다. 같은 기능은 단원 끝의 종합 수업에서 다시 측정한다.
단원을 시작하기 전에 출발점을 확인해 보세요. 짧은 자기 평가입니다. 점수가 매겨지지 않으며 결과는 브라우저에만 저장됩니다.
문제 1이전 단원에서어떤 저자가
\listoffigures가 있는 문서에 캡션이 달린 그림을 추가하고 한 번만 컴파일했다. 그림은 본문에는 나타나지만 그림 목록에는 나타나지 않는다. 무슨 일이 일어난 것인가?\listoffigures는 LaTeX 커널에 속한다.목록의 항목을 기록하는 것이 바로 캡션이다.지워도 소용없다. 다음 컴파일이 다시 쓴다.차례와 마찬가지로 그림 목록과 표 목록은 한 번의 컴파일에서 쓰이고 다음 컴파일에서 읽힌다. 낡아도 경고는 나오지 않는다.복습: 구획, 차례와 부록
문제 2이전 단원에서보고서 본문에 “김 & 이에 따르면”이라고 썼더니 컴파일이 “
Misplaced alignment tab character &”에서 멈춘다. 왜 그런가?기호는 인쇄할 수 있다. 실패한 까닭은 역슬래시 없이 썼기 때문이다.이 기호는 amsmath가 있든 없든 커널에서 예약되어 있다.오류는 기호에 있으며 인용과는 상관없다.정렬은 표이다.&는 칸을 나누고\\는 행을 끝낸다. 이 단원의 표도 같은 규칙을 따른다.복습: 여러 줄 수식
문제 3
\begin{tabular}{lr}표가&를 정확히 하나 포함한 줄에서 “Extra alignment tab has been changed to\cr”를 낸다. 오류는 어디에 있을 가능성이 가장 큰가?지적된 줄의 칸 수는 맞다. 열 지정을 늘리면 실수가 가려지고 뒤섞인 행이 남는다.두 열이면&하나가 맞다. 메시지가 가리키는 것은 표의 행이지 소스의 줄이 아니다.오류는 엔진이 내는 것이며 booktabs가 없어도 똑같이 나타난다.행 끝이 없으면 앞의 행이 지적된 줄까지 이어지고, 그 줄이 두 열짜리 행에 둘째&를 보태게 된다.복습: 읽기 쉬운 표
문제 4
S[table-format=2.2]로 선언한 열에 3.5, 12.25, 140.8이 들어간다. 어떻게 되는가?이 오류는 중괄호로 감싸지 않은 머리글처럼 수가 아닌 문자가 낸다.siunitx는 기본적으로 반올림하지도, 자릿수를 잘라 내지도 않는다.형식이 자리를 정한다. 들어가지 않는 것은 밀려난다.수가 확보한 자리를 넘어도 siunitx는 경고하지 않는다. 그 자리 밖에 수를 조판하고, 엔진은 너무 넓은 상자를 기록할 뿐이다.복습: 읽기 쉬운 표
문제 5
{lrrrr}표에서 첫 행이\multicolumn{2}{c}{대조군} & \multicolumn{2}{c}{처리군} \\이고 그 아래에\cmidrule(lr){2-3} \cmidrule(lr){4-5}가 있다. 오류도 경고도 없이 컴파일된다. 무엇이 보이는가?이 오류는 열 수보다 칸이 많은 행이 낸다. 여기서는 다섯 열에 칸이 넷이다.LaTeX는 1열이 어느 묶음에도 속하지 않는다는 것을 모른다. 각\multicolumn은 앞 칸이 끝난 곳에서 시작한다.\cmidrule은 가로줄을 그을 뿐 글자를 옮기지 않는다.맨 앞의&가 빠졌다. 열 수보다 칸이 적은 행은 올바른 행이므로 엔진은 경고하지 않는다. 가로줄은 적힌 번호로만 정해진다.복습: 복잡한 표와 긴 표
문제 690행짜리 표를 가운데에 놓으려고
table환경 안에서longtable로 썼다. 어떻게 되는가?플로트 안에서는 나뉠 수 없다.설치된 판은 오류를 내지 않는다. 바로 그것이 위험이다.줄이는 것은 아무것도 없다. 표는 쪽 아래로 넘쳐 나간다.플로트는 나뉘지 않는 상자이고, longtable은 이를 오류로 알리지 않는다.table을 빼면 된다. longtable은 그 자체로 가운데에 놓이고 자기\caption을 가진다.복습: 복잡한 표와 긴 표
문제 7너비가 높이보다 큰 4:3 비율의 사진에
\includegraphics[angle=90,width=4cm]{sample}이라고 썼다. 어떤 크기로 나타나는가?그것은[width=4cm,angle=90]의 결과이다. 회전하기 전에 너비를 정한 것이다.이미지를 회전했다는 것을 잊은 답이다. 너비는 회전한 뒤에 정해진다.일그러지는 것은keepaspectratio없이 너비와 높이를 함께 정했을 때뿐이다.graphicx는 옵션을 적힌 순서대로 적용한다. 먼저 회전하여 이미지가 3:4 비율이 되고, 그다음 회전한 이미지의 너비를 정한다.복습: 문서 안의 그림
문제 8
figures폴더에 오래된plot.pdf와 새로 고친plot.png가 있고, 소스에는\includegraphics{figures/plot}이라고 적혀 있다. 어떻게 되는가?엔진은 날짜를 보지 않고 정해진 확장자 순서를 본다.그런 오류는 없다. 모호함은 조용히 해소된다.이 오류는.svg처럼 엔진이 넣을 줄 모르는 확장자에서 난다.확장자가 없으면 엔진은.png보다.pdf를 먼저 시도하고 처음 찾은 것을 쓴다.복습: 문서 안의 그림
문제 9어떤 보고서가
\begin{figure}[htbp]옆에서 “아래 그림에서 보듯이”라고 쓴다. 무엇이 문제인가?글자는 허용된 위치이지 순서가 아니다. 여기에 들어가지 않으면 다른 곳으로 간다.[H]는 그림을 붙박아 두지만 쪽에 빈자리를 남긴다. 해결책은 번호로 참조하는 것이다.바로 갈 수 있다. 그것이 떠다닌다는 뜻이다.그림은 쪽을 넘어 나눌 수 없고, 엔진은 들어갈 수 있는 곳에 그림을 놓는다. 그림이 움직여도 뜻이 바뀌지 않는 것은 번호뿐이다.복습: 그림과 표의 플로트
문제 10프리앰블에
\usepackage[hangul]{kotex}와 그 뒤의\renewcommand{\listtablename}{표 목차}가 있고, cleveref는 옵션도\crefname도 없이 불러왔다. 캡션은 “표 1”, 목록 제목은 “표 목차”가 되었다.\cref{tab:costs}는 무엇이라고 쓰는가?그렇게 기대할 만하지만 그렇게 되지 않는다. cleveref에는 독자적인 어휘가 있다.cleveref는 kotex가 정한 이름을 하나도 읽지 않는다. 캡션의 이름도, 목록의 이름도 읽지 않는다.오류는 나지 않는다. 옵션도\crefname도 없으면 cleveref는 영어 이름을 쓴다.kotex의 설정은 캡션과 목록을 바꾸지만 cleveref까지는 미치지 않는다.복습: 그림과 표의 플로트
문제 11
\usepackage[spanish]{babel}과\usepackage{tikz}를 쓰는 스페인어 문서가 첫 그리기 줄\draw[->] (0,0) -- (1,0);에서 “Argument of \language@active@arg> has an extra }”를 내며 실패한다. 무엇이 빠졌는가?어느 순서든 오류는 같다. 단축 기호는 그림 안에서도 활성 상태로 남는다.->는 기본 화살촉이다. arrows.meta가 없다면 메시지는 “Unknown arrow tip kind”가 된다.이 줄에는 세미콜론이 있다. 메시지가 말하는 것은 언어의 활성 인수이지 끝나지 않은 경로가 아니다.TikZ의 babel 라이브러리는 그림 안에서 이 기호들에 본래의 뜻을 돌려준다. 패키지 순서를 바꿔도 고쳐지지 않는다. 이 강좌의 한국어 문서는 kotex로 조판하고 babel을 불러오지 않으므로 이 줄은 아무 일도 하지 않지만, 습관처럼 넣어 둔다.복습: TikZ로 그리기
문제 12
\draw (0,0) -- ++(2,0) -- +(0,1) -- +(-1,0);은 무엇을 그리는가?모든 단계에서++를 쓰면 그렇게 된다.경로를 닫는 것은 아무것도 없다. 닫으려면-- cycle이라고 쓴다.문제없이 섞을 수 있다. 차이는 기준점을 갱신하느냐에 있다.+는++로 마지막에 정한 점, 여기서는 (2,0)에서 재며 그 점을 바꾸지 않는다.복습: TikZ로 그리기
콘텐츠를 불러오는 중…