TeX Live 2018 打破了基于 labbook 文档的编译

TeX Live 2018 打破了基于 labbook 文档的编译

我已经用 LaTeX 记实验室笔记好几年了。我有自己的样式文件,它基于实验室手册班级。

不幸的是,当我本周早些时候升级到 TeX Live 2018 时,我的实验室笔记本无法再编译。我收到以下错误:

...
LaTeX Warning: Unused global option(s):
    [index-totoc].

(./Notebook.aux) (/usr/local/texlive/2018/texmf-dist/tex/latex/base/ts1cmr.fd)
(/usr/local/texlive/2018/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) (/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/grfext.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
ABD: EveryShipout initializing macros
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex

(/usr/local/texlive/2018/texmf-dist/tex/latex/translator/translator-basic-dicti
onary-English.dict)
(/usr/local/texlive/2018/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
) (/usr/local/texlive/2018/texmf-dist/tex/latex/siunitx/siunitx-binary.cfg)
No file Notebook.bbl.
(/usr/local/texlive/2018/texmf-dist/tex/latex/hyperref/nameref.sty
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))
(/usr/local/texlive/2018/texmf-dist/tex/latex/amsfonts/umsa.fd)
(/usr/local/texlive/2018/texmf-dist/tex/latex/amsfonts/umsb.fd) [1{/usr/local/t
exlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2]
(./FYNotebook.tex
! Undefined control sequence.
\UseRawInputEncoding ...tencodingname \@undefined
                                                  \let \DeclareFontEncoding@...
l.11 \experiment{NJOY}

?

抱歉,我没有 MWE。如果我从设置中删除任何东西,那么所有东西都会开始损坏。

有谁见过这个错误并且知道是什么原因造成的?

答案1

您的类是 8 位编码的,并且在代码中使用非 ASCII 字符。这会中断,因为 latex 的默认编码现在是 utf8。您可以使用以下方法避免错误\UseRawInputEncoding

\UseRawInputEncoding %without it you get the error.
\documentclass[12pt]{labbook}

\begin{document}
\experiment{NJOY}
\end{document}

答案2

用作宏参数的内部分隔符labbook.cls§

如果我添加

\chardef\labbook@us=\catcode`_
\catcode`_=3 % funny catcode

在该行之后\RequirePackage{makeidx} \makeindex,将所有§字符替换为_(该字符在类中未使用),同时执行

\catcode`_=\labbook@us

就在最后之前\endinput,示例文件可以毫无问题地进行编译。

无论如何,使用 8 位字符来达到这个目的都是错误的;不过,你可以添加

\UseRawInputEncoding

在任何文件的开头使用labbook.cls,编译就会顺利进行。

相关内容