tikzposter 类和 microtype 包之间不兼容

tikzposter 类和 microtype 包之间不兼容

我刚刚开始使用新的tikzposter类(以前使用过fancytikzposter同一作者的包),并立即发现使用该microtype包会导致 TeX 失败。

我想知道是否有其他人遇到过这种情况,因为我不知道该怎么办。我的 MWE 是:

\documentclass{tikzposter}
\usepackage{microtype}
\begin{document}
%\block{\textls{title}}{text}
\end{document}

中间注释掉的那行是使用 的原因之一microtype,即为了更好地控制字母间距。我在和中也得到了同样的结果pdftex,我使用的是刚刚更新的 TeXlive 安装。xetexlualatex

失败的错误是:

! Missing endcsname inserted.
<to be read again>
                   protect
l.5 \end{document}

?

答案1

这是一个相当棘手的问题...我认为这是一个错误tikzposter

问题在于,tikzposter使用\AtBeginDocument来启动一个tikzpicture环境,然后关闭\AtEndDocument。这意味着包(在本例中microtype)插入的任何其他代码AtBeginDocument都在组内执行,因此任何本地分配都将被撤消AtEndDocument。具体来说,microtype禁用一些只允许在序言内使用的命令ABD,从而触发错误AED

建议clsguide

\AtBeginDocument钩子不应用于进行任何排版的代码,因为排版结果是不可预测的。

尽管实际的排版tikzposter不是真正的问题而是它打开的组,但我仍然认为这属于不当使用\AtBeginDocumenttikzposter可以改用\AfterEndPreamble命令etoolbox(无论如何它都会加载)。

相关内容