TeX과 친구들
-
한글 카운터 사용하기TeX과 친구들 2020. 6. 30. 13:57
카운터에 ① 또는 ㉠ 같은 글자들을 사용한 적이 없다. 왜일까? 분명 이유가 있었을 텐데. 곰곰이 생각해 보니, 번역 때문이다. 한글 문서를 영어나 다른 언어로 번역하는 경우에 당연히 kotex을 빼게 된다. 원숫자를 위해 kotex을 쓰는 것이 합리적이라고 할 수 없다. 그리고 그 다음에 영어 폰트와 어울리는 한글 폰트를 찾는 수고를 해야 된다. 아무튼 oblivoir를 쓰는 경우에, memucs-enumerate 패키지 덕에, enumerate 환경에 한글 카운터를 사용하기가 매우 쉽다. \begin{enumerate}[(㉠)] oblivoir를 쓰지 않는 경우에는, 고전적인 방법을 써야 한다. \renewcommand\labelenumi{\onum{enumi}} enumitem과 함께 한글 카운터 ..
-
한국어 차례와 영어 차례TeX과 친구들 2020. 6. 16. 13:42
foo.toc에 \ctfinsert{KOREAN}과 \cftinsert{ENGLISH}가 삽입되고, 각각에 대해 정의된 코드가 작동한다. \changetocdepth가 -10으로 설정되면 그 뒤에 오는 모든 \contentsline이, 0보다 큰 값을 갖기 때문에, 무시된다. 취할 것과 버릴 것을 가리는 데에 참으로 영리한 방법이다. \hypersetup{hypertexnames=false, bookmarksdepth=subsection} \cftinsertcode{KOREAN}{} \cftinsertcode{ENGLISH}{\changetocdepth{-10}} \cftinserthook{toc}{KOREAN} \tableofcontents* 한글 텍스트 \cftinsertcode{KOREAN}{\ch..
-
lwarpTeX과 친구들 2020. 5. 13. 17:07
lwarp는 .tex을 HTML로 변환한다. \usepackage[mathjax]{lwarp} 어떤 패키지는 lwarp 앞에, 다른 패키지는 lwarp 다음에 불러야 하는데, 컴파일할 때 에러 메시지가 알려주는 대로 고치면 된다. #>xelatex foo #>lwarpmk html lwarpmk가 .tex 파일을 곧바로 읽어서 변환하는 게 아니라, lwarp 패키지가 다른 패키지들, 이를테면 amsmath 패키지의 매크로들에 대한 이런저런 규칙이나 정보들을 PDF에 심는 것 같다. 그래서 lwarpmk가 .tex도 참조하겠지만 적지 않은 부분을 PDF에서 가져다가 html로 만드는 게 아닌가 싶다. 다음과 같은 사용자 정의 매크로는 당연히 무시된다. \newcommand\my[1]{{\Huge\itsha..
-
페르시아 쐐기 문자TeX과 친구들 2019. 12. 20. 16:59
고대 페르시아 쐐기 문자를 식자하는 방법을 소개하는 이 글에서 몇 가지 중요한 것들을 배웠다. \documentclass{article} \usepackage{fontspec} \newfontfamily\oldpersianfont[Mapping=latin-to-oldpersian]{Noto Sans Old Persian} \newcommand\textop[1]{{\oldpersianfont #1}} \newenvironment{OldPersian}{\oldpersianfont\ignorespaces}{\ignorespacesafterend} \begin{document} \textop{𐎭 𐎡 𐎼 𐎹 𐎺} \textop{da-a-ra-ya-va-ha-u-sha-} \end{document} 일단 쐐기 문자..
-
토큰 리스트TeX과 친구들 2019. 4. 4. 17:39
tex 파일이든 뭐든 텍스트 파일을 읽어들이는 방식은 텍에게 매한가지일 것이다. KTS 설립 10주년 기념 문집 『TeX 조판, 그 이상의 가능성 』에 실린 남수진, 「TeX 매크로 작성 기법」과 김도현, 「TeX 토큰과 확장: 입력 문자열 처리」에 따르면 텍의 문자열 처리 과정은 다음과 같다. 입력: 파일을 줄 단위로 읽어 토큰 리스트를 만든다. > 전개: 더 이상 할 수 없을 때까지 모든 토큰들을 전개(확장)한다. > 실행: \hskip 같은 원시 명령들이 처리하는 일을 말하는 것이겠지 ... > 출력: 수평 모드와 수직 모드를 오가며 페이지를 만드는 것을 말하는 것이겠지 ... 내가 충분히 이해하지 못했던 것은 중복된 공백이 무시되는 따위의 처리가 정확히 언제 이루어지느냐는 것이었다. 이를테면, "..
-
이단 조판을 위한 세 가지 방법TeX과 친구들 2019. 1. 23. 16:17
\twocolumn 명령과 \onecolumn 명령의 문제는 단 변경이 항상 새 페이지에서 이루어진다는 것이다. 한 페이지에서 이단과 일단이 동시에 필요하다면 multicol 패키지의 multicols* 환경이라는 거의 유일한 그리고 다행히도 상당히 신뢰할 만한 해법이 있다.하지만 문서 전체를 이단으로 하되 일부 페이지에서 일단을 함께 사용하고자 한다면 몇 가지 방법들을 두고 고민해야 한다.1) multicol 패키지KTUG의 옛 위키에 따르면 multicol 패키지에는 두 가지 문제가 수반된다. 하나는 각주가 단이 아니라 페이지에 걸친다는 것, 다른 하나는 떠다니는 개체가 마찬가지로 단이 아니라 페이지에 걸친다는 것이다. 하지만 이것들은 문제라 할 수 없고 회피하기도 어렵지 않다. 그보다 더 성가신 문..
-
확장하거나 확장하지 않거나TeX과 친구들 2018. 8. 13. 10:26
매크로의 확장 원리를 굳이 깊이 이해하려 하지 않았다. 기대와 달리 확장되지 않을 때 \exp_args:NNx 따위를 사용하면 해결되기 때문이다. 최근에 fontspec-xetex.sty가 (expl3 원칙에 따라 매크로 이름을 바꾼 것이 대부분인 듯) 업데이트되면서 xetexko-font.sty도 업데이트되었다. 그 가운데 하나가 이것이다. \protected\edef\rmfamily{\unexpanded\expandafter{\rmfamily\XK@rm@korean@font}} \unexpanded가 무엇인지 몰라 \rmfamily가 어떻게 재정의되는지 언뜻 이해되지 않았다. \protected는 버틸 수 있는 한 풀리지 말라는 뜻이다. 따라서 \rmfamily는 토큰 리스트가 만들어질 때 마지막으로..