несовместимость между классом tikzposter и пакетом microtype

несовместимость между классом tikzposter и пакетом microtype

Я только что начал использовать новый tikzposterкласс (ранее использовал fancytikzposterпакет того же автора) и сразу обнаружил, что использование microtypeпакета приводит к сбою TeX.

Мне интересно, сталкивался ли кто-нибудь с этим, так как я не знаю, что делать. Мой MWE:

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

Закомментированная строка в середине — одна из причин использования microtype, т. е. для большего контроля над интервалом между буквами. У меня то же самое в pdftex, xetexи lualatexя использую недавно обновленную установку TeXlive.

Ошибка, вызывающая сбой:

! 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команду from etoolbox(которую он в любом случае загружает).

Связанный контент