MikTeX 안녕... Windows에도 TeX Live + Visual Studio Code 조합을 추천

작년에 급하게 국내 논문을 제출해야 할 일이 있어 국내 논문 양식을 찾아 보았더니 2023년에 한해 LaTeX 양식의 영문 논문을 파격적인 게재료로 접수 받는다는 공지를 읽게 되었다.

이전까지는 계속 한글 또는 Word 형식의 논문 양식만 제공되었는데 이제 LaTeX 양식을 제공하니 반가웠다.

보통 내 분야의 공학 연구는 단 하나의 한글도 개입되지 않기 때문.

이제 국내 논문을 쓸 때 문장 하나 하나 번역할 일이 없어져서 시간이 상당히 단축될 것 같다.

.

.

.

고 생각했는데 이 양식은 또 xelatex라는 방식으로 compile 하고, 설치되어 있던 기존 Visual Studio Code의 LaTeX Workshop extension으로는 잘 안 됨...

일단 알아낸 하나는 xelatex만 하면 되는 것이 아니고 references (bibliography) 를 반영해 주기 위해 xelatex -> biber -> xelatex -> xelatex 과정으로 recipe를 설정해 줘야 한다는 것. (LaTeX의 기본 상식이 없이 그냥 이것 저것 인터넷에서 찾아와 쓰다 보니 이런 기본적인 부분에 대한 이해도 없다. ㅜ)

다음은 내가 자주 투고하는 학술지들의 LaTeX Workshop recipes 이다.


"latex-workshop.latex.recipes": [
   

        {
            "name": "Custom_JKICS",
            "tools": [
                "xelatex",
                "biber",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "Custom_ICTExpress",
            "tools": [
                "latexmk"
            ]
        },
        {
            "name": "Custom_MDPI",
            "tools": [
                "latexmk"
            ]
        },
        {
            "name": "Custom_IEEEtrans",
            "tools": [
                "pdflatex",
                "bibtex",
                "pdflatex",
                "pdflatex"
            ]
        }
    ],
    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "-outdir=%OUTDIR%",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "lualatexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-lualatex",
                "-outdir=%OUTDIR%",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOC%"
            ]
        },
        {
            "name": "xelatexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-xelatex",
                "-outdir=%OUTDIR%",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "latexmk_rconly",
            "command": "latexmk",
            "args": [
                "%DOC%"
            ],
            "env": {}
            },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOC%"
            ],
            "env": {}
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ],
            "env": {}
        },
        {
            "name": "biber",
            "command": "biber",
            "args": [
                "%DOCFILE%"
            ],
            "env": {}
        },
        {
            "name": "rnw2tex",
            "command": "Rscript",
            "args": [
                "-e",
                "knitr::opts_knit$set(concordance = TRUE); knitr::knit('%DOCFILE_EXT%')"
            ],
            "env": {}
        },
        {
            "name": "jnw2tex",
            "command": "julia",
            "args": [
                "-e",
                "using Weave; weave(\"%DOC_EXT%\", doctype=\"tex\")"
            ],
            "env": {}
        },
        {
            "name": "jnw2texminted",
            "command": "julia",
            "args": [
                "-e",
                "using Weave; weave(\"%DOC_EXT%\", doctype=\"texminted\")"
            ],
            "env": {}
        },
        {
            "name": "pnw2tex",
            "command": "pweave",
            "args": [
                "-f",
                "tex",
                "%DOC_EXT%"
            ],
            "env": {}
        },
        {
            "name": "pnw2texminted",
            "command": "pweave",
            "args": [
                "-f",
                "texminted",
                "%DOC_EXT%"
            ],
            "env": {}
        },
        {
            "name": "tectonic",
            "command": "tectonic",
            "args": [
                "--synctex",
                "--keep-logs",
                "%DOC%.tex"
            ],
            "env": {}
        }
    ],


위와 같이 설정했는데도 불구하고 biber 부분에서 오류가 났는데, version mismatch 때문이었다.

구체적으로 말하자면, 앞서 언급한 xelatex -> biber -> xelatex -> xelatex 순서로 compile 하게 되면 기존에 설치되어 있지 않았던 biber를 MiKTeX를 통해 자동으로 설치하게 되는데 이때 설치된 버전이 2.19였다.

하지만 국내 논문 양식에서 필요하는 biber 버전은 2.16이었고 굉장히 짜증나게도 2.19와 2.16은 호환이 안 되는 모양이었다.

따라서 인터넷도 열심히 뒤지고, MiKTeX consol을 이용해 biber v2.16을 설치해 보고자 했지만 모두 실패.

뭘 해도 안 되길래 결국 그냥 macOS에 이어 Windows에서도 MiKTeX를 지우고 TeX Live로 바꿔버렸다.

지금 아주 잘 됨

MiKTeX 아웃!


Comments