\usetikzlibrary 应仅在法语 babel 的序言中使用

\usetikzlibrary 应仅在法语 babel 的序言中使用

以下 MWE 的汇编(编辑:现在,根据需要,该babel库已加载到序言中(感谢@egreg 的评论),而另一个库(无论哪一个)都在序言之后加载。):

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage[french]{babel}
\usetikzlibrary{babel}
\begin{document}
\usetikzlibrary{shapes.misc}
\end{document}

失败并出现错误:

Runaway argument?
Header: /cvsroot/pgf/pgf/generic/pgf/frontendlayer/tikz/libraries/tik\ETC.
! Paragraph ended before \pgf@parseid was complete.
<to be read again> 
                   \par

(无论tikz文档主体中使用了什么库)。

但如果:

  • babelfrench未使用带有选项的软件包,或者
  • \usetikzlibrary在文档主体中移至序言中,

一切都运行良好(\usetikzlibrary{babel}与问题无关,只是在babel加载包时推荐,尤其是使用该french选项时)。

造成这个错误的原因是什么以及如何避免它?

答案1

如果你需要在babel激活角色后加载代码,通常最好在本地撤消该操作,这里似乎可以关闭:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage[french]{babel}
\usetikzlibrary{babel}
\begin{document}
\shorthandoff{:}%
\usetikzlibrary{shapes.misc}
\shorthandon{:}%
\end{document}

相关内容