요약
이 수업은 강좌의 일곱째이자 마지막 단원을 연다. 이 단원은 기타 문서와 협업을 다룬다. 단원이 무엇을 위한 것인지 설명한다. 앞의 여섯 단원에서 배워 논문과 학위 논문에 적용한 것을, 연구자가 자기 연구를 알리는 다른 갈래의 문서(발표 자료, 포스터, 편지, 이력서)로, 여러 저자가 동시에 쓰는 문서로, 그리고 학술지나 저장소가 출판하려고 받아 들이는 문서로 넓히는 것이다. 단원의 네 수업과, 슬라이드에서 제출하는 파일까지 그것들을 잇는 흐름을 소개하고, 앞 단원들에서 이미 아는 것으로 전제하는 내용을 밝히며, 단원이 쓰는 도구의 내력을 돌아본다. 또 단원이 해결하는 문제, 곧 같은 내용을 형식마다 다시 쓰지 않고 여러 형식으로 보여야 한다는 문제를 제시하고, 이런 형식이 화학 학위 논문 심사, 언어학 학회, 장학금 지원, 역사학자 팀이 쓰는 논문에 공통된다는 것을 보인다.
학습 목표
- 단원 내용의 순서를 설명하고, 각 수업이 다음 수업에 무엇을 보태는지 설명한다.
- 단원이 앞 단원들에서 이미 아는 것으로 전제하는 내용을 확인하고, 필요하면 복습한다.
- 같은 내용이 텍스트의 마크업이 아니라 문서 클래스만 바꾸어 논문으로도 슬라이드로도 조판될 수 있는 까닭을 예를 들어 설명한다.
- 단원이 충족하는 법을 가르치는 문서의 갈래, 협업 방식, 출판 요건을 자기 분야에서 알아본다.
시작 평가
단원을 시작하기 전에 출발점을 재어 두면 좋다. 이 평가는 자기 평가이며 점수를 매기지 않는다. 목적은 오직 학습의 방향을 잡는 데 있다. 처음 두 문항은 단원이 앞 단원들에서 이미 아는 것으로 전제하는 내용을 복습한다. 이어지는 여덟 문항은 두 문항씩 차례대로 단원의 네 수업에 대응한다. Beamer로 발표 자료를 만들어 본 적도, 다른 저자와 함께 문서를 써 본 적도 없는 사람이 정답을 맞히지 못하는 것은 당연하다. 맞든 틀리든 모든 답이 요점을 설명하고 그 요점을 다루는 수업을 알려 주기 때문이다. 같은 기능은 단원 끝의 종합 수업에서 다시 측정한다.
단원을 시작하기 전에 출발점을 확인해 보세요. 짧은 자기 평가입니다. 점수가 매겨지지 않으며 결과는 브라우저에만 저장됩니다.
문제 1이전 단원에서물리학 논문의 두 공저자가 벡터를 서로 다르게 쓴다. 한 사람은
\mathbf{v}로, 다른 사람은\vec{v}로 쓴다. 불일치를 막고 논문 전체의 표기를 한곳에서 바꿀 수 있게 하려면 어떻게 해야 하는가?한 번은 도움이 되지만, 손으로 새로 쓸 때마다 불일치가 다시 생기고, 바꾸기가 벡터가 아닌 곳까지 건드릴 수 있다.엔진은 쓰인 대로 조판한다.\mathbf와\vec은 서로 다른 모양을 만들며, 그것을 알려 주는 경고도 없다.그렇게 할 수도 있지만, 표준 명령을 다시 정의하면 소스를 읽는 사람이 놀란다. 강좌가 가르치는 길은 고유한 이름을 가진 자기만의 명령이다.자기만의 명령은 대상이 무엇인지, 곧 벡터임을 말하고, 그 정의가 생김새를 정한다. 프리앰블에서 정의를 바꾸면 모든 출현 위치가 바뀐다. 여러 저자가 쓰는 논문에서는 공유 프리앰블이 곧 팀의 약속이기도 하다.복습: 매크로와 자신만의 프리앰블
문제 2이전 단원에서어느 논문의 그림이
\includegraphics[width=14cm]{chart}로 삽입되어 있다. 이것을 그대로, 프레임 너비가 12.8 cm인 Beamer 슬라이드에 옮기면 어떻게 되는가?Beamer는 요청된 너비를 바꾸지 않는다. 그림은 14 cm를 유지한 채 삐져나간다.상자 넘침은 경고이지 오류가 아니다. 문서는 컴파일되고, 결함은 결과에서만 보인다.Beamer에서는 프레임마다 독립된 한 페이지이다. 자리가 모자란다고 다른 프레임으로 넘어가는 것은 없다.절대 너비는 자기가 어디에 쓰일지 모른다.\linewidth에 대한 너비는 놓이는 단, 쪽, 프레임에 맞추어진다.복습: 문서 안의 그림
문제 3Beamer 프레임에 세 항목짜리 목록이 있고, 첫째와 둘째 항목 뒤에
\pause가 있다. PDF에서 몇 페이지가 되는가?PDF는 움직이지 않는다. Beamer는 잇따른 페이지로 나타나는 모습을 흉내 낸다.\pause는 하나마다 처음 페이지에 한 단계를 더한다. 두 번 멈추면 세 페이지가 된다.세 페이지는 같은 프레임에 속하며, 같은 제목과 같은 슬라이드 번호를 단다.PDF 발표 자료에는 애니메이션이 없다. 항목이 드러날 때마다 페이지가 하나 늘고, 뷰어에서 페이지를 넘기면 항목이 나타나는 것처럼 보인다.문제 4Beamer 프레임에 코드 일부를 보여 주려고
verbatim환경을 넣었더니 컴파일이 “File ended while scanning use of \@xverbatim”로 멈춘다. 무엇이 빠졌는가?이 환경은 이미 커널에 있다. 문제는 그것을 담은 프레임을 Beamer가 어떻게 읽느냐이다.그것은 독립된 줄에 있어야 하고, 그렇게 해도fragile이 없으면 오류는 남는다.프레임에 알맞은 옵션이 있으면 받는다.Beamer는 프레임을 짜기 전에 그 내용을 읽어 들이는데, 문자 그대로의 텍스트는 그런 읽기를 견디지 못한다.fragile은 프레임을 다른 방식으로 처리하게 하여verbatim과\verb을 쓸 수 있게 한다.문제 5책은 약 30 cm 거리에서 읽고, 그 거리에서는 약 7포인트보다 작은 글자는 편하게 읽히지 않는다. 1.5 m 거리에서 읽힐 포스터의 본문에는 최소 몇 포인트의 글자 크기가 필요한가?
12포인트는 50 cm 거리에서 읽히는 크기이지 1.5 m에서가 아니다. 포스터의 글자 크기는 거리에서 끌어내는 것이지 클래스의 옵션에서 정해지는 것이 아니다.글자 크기는 넓이가 아니라 읽는 거리에 달려 있다. 더 큰 포스터는 단이 많아질 뿐 글자가 커지지 않는다.글자가 차지하는 각도는 글자 크기에 비례하고 거리에 반비례한다. 관계는 선형이다.눈이 받아들이는 것은 글자가 차지하는 각도이며, 그 각도는 거리에 비례하여 작아진다. 여기서 규칙 이 나온다(는 센티미터). 그래서 포스터는 논문의 글자 크기로 조판하지 않는다.복습: 포스터, 편지, 이력서
문제 6
scrlttr2클래스로 조판하는 편지에서 받는 사람의 이름과 주소는 어디에 쓰는가?\opening은 첫인사를 쓴다. 받는 사람은 그보다 앞서 선언되어 있어야 한다.이 변수는 보내는 사람의 주소를 담으며, 받는 사람의 주소가 아니다.편지에는 제목이 없다. 보내는 사람, 받는 사람, 날짜, 첫인사, 끝인사가 있을 뿐이다.보내는 사람의 정보는\setkomavar로 선언하고, 받는 사람의 정보는 편지를 한 통씩 시작할 때 준다. 무엇을 어디에 둘지는 클래스가 정하고, 그로써 편지의 형식이 정해진다.복습: 포스터, 편지, 이력서
문제 7LaTeX 프로젝트를 Git으로 관리한다. 어떤 파일을 버전 관리 대상으로 삼아야 하는가?
생성되는 것은 컴파일하면 되살릴 수 있다. 그것을 관리해 봐야 잡음과 충돌만 늘어난다.PDF에서 소스를 되살릴 수는 없다. Git에 보관하는 것은 쓴 것이다.포함되는 각 장, 문헌 데이터베이스, 그림도 소스이다.생성되는 파일은 컴파일할 때마다, 또 컴퓨터마다 바뀐다. 그것들을 관리하면 아무도 하지 않은 변경이 이력을 채우고, 내용 없는 충돌이 생긴다.복습: 공동 집필
문제 8두 공저자가 Git의 서로 다른 브랜치에서, 한 줄로 쓰인 같은 문단의 첫째 문장과 셋째 문장을 고친다. 브랜치를 병합하면 어떻게 되는가?
Git은 한 줄 안의 문장을 구별하지 않는다.Git은 같은 줄에 대한 두 변경 가운데 하나를 고르지 않는다. 그 줄을 충돌로 표시하고 판단을 사람에게 맡긴다.충돌은 Git의 문제이지 LaTeX의 문제가 아니다. 다만 해결하지 않으면 그 표시가 텍스트로 파일에 남는다.Git이 읽는 것은 문장이 아니라 줄이다. 그래서 팀은 흔히 한 줄에 한 문장이라는 약속을 한다. 줄바꿈 하나는 빈칸과 같으므로 엔진이 조판한 결과는 그대로이고, 남의 변경과 부딪히지 않게 된다.복습: 공동 집필
문제 9어느 학술지가
journal.cls파일로 자기 클래스를 배포한다. 저자가\documentclass{journal}이라고 쓰자 엔진이 “File `journal.cls' not found”라고 답한다. 무엇이 빠졌는가?클래스는 패키지가 아니다.\documentclass로 불러오는 것이며,\usepackage라면journal.sty를 찾을 것이다.클래스는 확장자 없이 지정한다. 문제는 파일이 엔진이 찾는 곳에 없다는 것이다.클래스가 TeX Live로 배포될 때만 가능하다. 많은 학술지는 클래스를 낱개 파일로 나눠 준다.엔진은 클래스를 문서의 폴더와 설치 트리에서 찾는다. 그 어디에도 없는 클래스는 엔진에게 존재하지 않는다.복습: 템플릿과 출판
문제 10보존용 PDF/A를 얻으려고
\documentclass뒤에\DocumentMetadata{pdfstandard=a-2b}라고 썼다. 어떻게 되는가?쓰인 자리에서는 명령이 효과가 없고, 엔진이 그것을 오류로 알린다.오늘날의 PDF 관리는 LaTeX 자신이\DocumentMetadata를 통해 한다. 문제는 위치이다.이 명령은 예외로,\documentclass보다 앞에 있어야 한다.\DocumentMetadata는 클래스와 패키지를 불러오기 전에 PDF 관리를 준비한다. 그래서 그것들 뒤에 올 수 없다.복습: 템플릿과 출판
콘텐츠를 불러오는 중…