我刚刚开始使用新的tikzposter
类(以前使用过fancytikzposter
同一作者的包),并立即发现使用该microtype
包会导致 TeX 失败。
我想知道是否有其他人遇到过这种情况,因为我不知道该怎么办。我的 MWE 是:
\documentclass{tikzposter}
\usepackage{microtype}
\begin{document}
%\block{\textls{title}}{text}
\end{document}
中间注释掉的那行是使用 的原因之一microtype
,即为了更好地控制字母间距。我在和中也得到了同样的结果pdftex
,我使用的是刚刚更新的 TeXlive 安装。xetex
lualatex
失败的错误是:
! 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
不是真正的问题而是它打开的组,但我仍然认为这属于不当使用\AtBeginDocument
。tikzposter
可以改用\AfterEndPreamble
命令etoolbox
(无论如何它都会加载)。