fohte.log

https://fohte.net に移行しました

LaTeX で TikZ を usepackage すると Missing number, treated as zero. でコケる

状況

とあるスタイルファイルを usepackage した状態で

\usepackage{tikz}

しようとするとエラーを吐かれ、TeX ファイルのコンパイルができない。

エラーログ

! Missing number, treated as zero.
<to be read again>
                   \gdef
l.33 \xdef
          \pgfmath@rnd@z{\the\c@pgfmath@counta}% The seed.

再現性のある最小構成

ディレクトリ構成

.
├── foo.sty
└── main.tex

main.tex

\documentclass{jsarticle}

\usepackage{foo}
\usepackage{tikz}

\begin{document}
\end{document}

foo.sty

\def\year#1{\gdef\@year{#1}}

原因

TikZ が内部で利用している pgfmathfunctions.random.code.tex\year を乱数のシードの生成に使用していて、TikZ をロードする前に呼び出したスタイルファイル (今回は foo.sty) で定義された \year とコンフリクトしているのが原因だった。

解決法

TikZ をロードした後にコンフリクトしていたスタイルをロードすれば良い。

\documentclass{jsarticle}

\usepackage{tikz}
\usepackage{foo}

\begin{document}
\end{document}

参考