tikzposter クラスと microtype パッケージ間の非互換性

tikzposter クラスと microtype パッケージ間の非互換性

私は新しいtikzposterクラスを使い始めたばかりですが (以前はfancytikzposter同じ作者のパッケージを使用していました)、すぐにそのmicrotypeパッケージを使用すると TeX が失敗することがわかりました。

どうすればいいのか分からないので、他にもこれに遭遇した人がいるかどうか気になっています。私の MWE は次のとおりです:

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

中央のコメントアウトされた行はmicrotype、 を使用する理由の 1 つです。つまり、文字間隔をより細かく制御できるようにするためです。 、 でも同じ結果が得られますpdftexxetexまたlualatex、私は新しく更新された TeXlive インストールを使用しています。

失敗したエラーは次のとおりです:

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

?

答え1

これはかなり難しい問題でした... のバグだと主張しますtikzposter

問題は、 が環境を開始するためにtikzposter使用し、その後環境が閉じられることです。つまり、パッケージ (この場合は) が挿入するその他のコードはすべてグループ内で実行されるため、ローカル割り当てはすべて元に戻されます。具体的には、 はプリアンブル内でのみ許可されている一部のコマンドを無効にし、エラーを引き起こします。\AtBeginDocumenttikzpicture\AtEndDocumentmicrotypeAtBeginDocumentAtEndDocumentmicrotypeABDAED

アドバイスclsguide:

タイプセットの結果が予測できないため、タイプセットを行うコードにはフック\AtBeginDocumentを使用しないでください。

ここでの実際のタイプセッティングはtikzposter問題ではなく、むしろそれが開くグループですが、それでもこれは . の不適切な使用に該当すると言えます\AtBeginDocument。代わりにfrom コマンドtikzposterを使用できます(いずれにせよ、これはロードされます)。\AfterEndPreambleetoolbox

関連情報