pgfplots、babel 包和 babel tikzlibrary 之间的冲突

pgfplots、babel 包和 babel tikzlibrary 之间的冲突

今天,我在使用一个简单的投影仪框架时发现了一个奇怪的错误,我很确定这个框架在几周前是可以正常工作的。

它似乎又归结为活动字符,这是\usetikzlibrary{babel}旨在修复的问题。但这里的情况正好相反:如果使用该库,它会产生错误(File ended while scanning use of \pgfplots@addplotimpl@table@fromfile),而当不使用该库时则不会出现问题...

有趣的是,如果\begin{frame}...\end{frame}删除,一切都会顺利进行。

PS 较早的相关帖子似乎没有回答该问题...

这一个涉及tikzmarktikzmark、babel 包(法语)和 babel tikzlibrary 之间的冲突

这一个涉及etoolbox法语选项、babel 包、babel tikzlibrary 和 etoolbox 包之间的冲突

梅威瑟:

\documentclass{beamer}
\usepackage[french]{babel}
\usepackage{pgfplots}
\usetikzlibrary{babel} % No problem if commented

\begin{filecontents*}{test.csv}
   a,b,c,d,e
   1,2,3,4,5
   1,2,3,4,5
   1,2,3,4,5
   1,2,3,4,5
\end{filecontents*}

\begin{document}
\begin{frame} % Also no problem if commented!?
\begin{tikzpicture}
   \begin{axis}
      \addplot table[col sep=comma, x expr=\coordindex, y=a]{test.csv};
   \end{axis}
\end{tikzpicture}
\end{frame} % Also no problem if commented!?
\end{document}

答案1

由于“激活”和重新定义一些特殊字符,babel包french存在许多不兼容性。在这种情况下,让你头疼的是 的激活;。尽管babelTiZ 库有时就足够了,但它在frame.

我看到三种可能的解决方案:

  1. 使用lualatex。在这种情况下,它所需的特殊间距是;:使用 LUA 引擎完成的,并且您的示例可以开箱即用。

  2. ;在框架开始时禁用速记,并\AtBeginEnvironment{frame}{\shorthandoff{;}}在前言中添加;也许将来您还需要将其添加:到列表中(就我所知,babel-french激活;:!?)。

  3. 永久禁用简写\usepackage[french, shorthand=off]{babel}

解决方案 (1) 保留了所有特殊间距规则......

相关内容