KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
  • TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
    • 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
  • 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.

정보글 Spix 소개

2020.07.27 04:25

noname 조회 수:4015

latex 작업흐름 자동화 도구 중에 arara라는 게 있습니다. 사용법이 미묘... 하지만 편리하게 사용하고 계신 분이 많은 것으로 압니다.

SpiX는 작명에서부터(앵무새 종류인 spix's macaw에서 따왔다네요...) arara를 흉내낸 데서 알 수 있듯이 arara와 유사하게 동작하는 유틸리티입니다. TeX Live에 기본적으로 포함되어 있는 Python3 스크립트입니다. (arara가 Java인 것과 대조되네요.) 따라서 시스템에 python3이 설치되어 있어야 동작합니다. 리눅스나 맥에서야 걱정할 것이 없을 테고 Windows에서는 python3를 PATH에 포함시켜서 설치해야 할 것 같은데 Windows에서 어떻게 동작하는지는 테스트해보지 않았습니다.

기본적인 사용법은 workflow 명령을 다음과 같은 방식으로 써넣고 spix로 컴파일하는 것입니다.

%
%$ lualatex --shell-escape --synctex=1 $texname
%$ makeindex $basename.idx
%$ lualatex --shell-escape --synctex=1 $texname
%

arara와 비교하자면,

  1. 위의 작업흐름 directive를 arara의 경우에는 문서 어디에 있어도 상관없지만 spix는 반드시 \documentclass 이전에 적어야 한다는 것.
  2. arara의 경우에는 rule에 따른 YAML 형식의 지시문을 적어야 하지만 이것은 그냥 명령행에서 실행할 명령 자체를 적어주면 된다는 것. 그래서 별도로 rule 파일을 만들 필요가 없고 원하는 어떤 명령이라도 실행할 수 있다고 합니다. 실제로 spix의 작업 지시문은 sh 스크립트로 실행되기 때문에 원한다면 sh 스크립트의 고급 기법(?)을 사용해서 정의하는 것도 불가능하지는 않다고 하네요. 예컨대 for 문을 쓰는 것도 가능하고요. 단 bash가 아니라 순수 sh 문법이어야 한다는 제약이 있답니다.
  3. 확장자 .tex이 붙는 $texname과 확장자 없는 파일 이름 $basename 변수가 기본적으로 사용가능하고, 사용자 변수도 지정하여 쓸 수 있습니다. project 파일이라면 main.tex을 그런 식으로 지정해서 쓸 수 있을 듯합니다.
  4. arara는 % arara: 라는 것을 지시문 앞에 붙여야 하는 데 비해 이것은 %$로 명령행에서 실행할 명령을 적어주네요. 그 다음에 스페이스가 하나 와야 하고, %와 $가 떨어지면 안 되고 %는 반드시 행의 첫머리에 있어야 한답니다. 다르게 얘기하면 잠깐 실행을 생략하고 싶지만 지우고 싶지는 않은 실행지시문에 대하여 %와 $를 한 칸 떼어두는 방식으로 처리할 수 있을테지요.
  5. 에러 발생시 연속 컴파일을 arara는 명령행 옵션 -v를 붙이느냐 안 붙이느냐에 따라 조절할 수 있는데, spix는 그런 건 사용자가 컴파일 과정에서 알아서 처리하라고 합니다. 별도로 다른 명령행 옵션 등을 제공하지 않기 때문에 --interaction=nonstopmode를 위의 명령줄에 써주거나 에러가 발생한 지점에서 연속 컴파일을 지시하거나 하여야 하는 점이 다르네요.

이를테면 컴파일을 위한 배치스크립트를 문서 속에 적어둔다는 개념에 가깝습니다. 잘만 사용하면 좋을 것 같아요.

TeXShop 사용자께서는 ~/Library/TeXShop/Engines 폴더에 다음 내용으로 된 SpiX.engine 파일을 만드시고,

#!/bin/bash
export PATH=/Library/TeX/texbin:/usr/texbin:/usr/local/bin:${PATH}
spix "$1"

TS-program을 SpiX로 하고 작업 지시문을 적어넣으면 될 것 같습니다. SpiX.engine 파일에는 실행 권한이 주어져야 합니다. (chmod a+x)




XE Login