babel 和 tikz 使用 \draw 的问题

babel 和 tikz 使用 \draw 的问题

我正在尝试下一个代码:

\documentclass[pdftex,spanish]{article}
\usepackage{babel}
\usepackage{tikz}

\begin{document}

Simple arrow: 

\begin{tikzpicture}
    \draw[->] (-1.5,0) -- (1.5,0);
\end{tikzpicture}

\end{document}

但它不起作用。它抛出错误:

  • ! Argument of \language@active@arg> has an extra }.
  • ! Paragraph ended before \language@active@arg> was complete.<to be read again>\par \draw[->]

如果没有 babel 包它也能正常运行,我该怎么办?

答案1

问题在于,该spanish模块针对西班牙语引文的特殊管理babel制作>并激活了字符。<

更新:

PGF/TikZ 版本 3.0.0 中有一个babel库可以解决由于某些模块对类别代码的更改而产生的问题babel,因此加载该库就足够了:

\documentclass[spanish]{article}
\usepackage{babel}
\usepackage{tikz}
\usetikzlibrary{babel}

\begin{document}

Simple arrows: 

\begin{tikzpicture}
    \draw[->] (-1.5,0) -- (1.5,0);
\end{tikzpicture}

\tikz\draw[->] (-1.5,0) -- (1.5,0);

\end{document}

(谢谢克劳迪奥·菲安德里诺指出这一点他的评论)。

PGF/TikZ 版本 2.10

要停用不需要的 s 重新定义tikzpicture,但保留文档其他部分的定义,可以使用

  execute at begin picture={\deactivatequoting},
  execute at end picture={\activatequoting}

对于每个tikzpicture。请注意,这种方法有两个优点:

  1. 不需要额外的包裹。

  2. 当使用命令版本时,它也会产生所需的结果\tikz(参见下面的示例代码)。

代码:

\documentclass[spanish]{article}
\usepackage{babel}
\usepackage{tikz}

\tikzset{
every picture/.append style={
  execute at begin picture={\deactivatequoting},
  execute at end picture={\activatequoting}
  }
}
\begin{document}

Simple arrows: 

\begin{tikzpicture}
    \draw[->] (-1.5,0) -- (1.5,0);
\end{tikzpicture}

\tikz\draw[->] (-1.5,0) -- (1.5,0);

\end{document}

在此处输入图片描述

附注:不要使用pdftex选项;现代 LaTeX 系统会自动检测驱动程序。

答案2

正如 Malipivo 所指出的,spanish选项babel使其>处于活动状态。您可以在本地(所有)环境中使其处于非活动状态tikzpicture,在您的序言中添加这些:

\usepackage{etoolbox}
\AtBeginEnvironment{tikzpicture}{\shorthandoff{>}\shorthandoff{<}}{}{}

完整代码:

\documentclass{article}
\usepackage[spanish]{babel}
\usepackage{tikz}
\usepackage{etoolbox}
\AtBeginEnvironment{tikzpicture}{\shorthandoff{>}\shorthandoff{<}}{}{}

\begin{document}

Simple arrow:

\begin{tikzpicture}
    \draw[->] (-1.5,0) -- (1.5,0);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

如果不需要使用spanish quotes,只需添加es-noquoting到 babel 选项,TiKZ箭头就会再次出现。

\documentclass[pdftex,spanish]{article}
\usepackage[es-noquoting]{babel}
\usepackage{tikz}

\begin{document}

Simple arrow: 

\begin{tikzpicture}
    \draw[->] (-1.5,0) -- (1.5,0);
\end{tikzpicture}

\end{document} 

在此处输入图片描述

如果您需要spanish quotes使用新的babelTiKZ 3.0 库(如 Claudio 所建议的)。这里有一个例子:

\documentclass[pdftex,spanish]{article}
\usepackage{babel}
\usepackage{tikz}
\usetikzlibrary{babel}

\begin{document}

Simple arrow: 

\begin{tikzpicture}
    \draw[->] (-1.5,0) -- (1.5,0) node[right] {<<Hola>>};
\end{tikzpicture}

<<Hola>>
\end{document}

在此处输入图片描述

答案4

我不知道为什么,但之前的答案对我都不起作用。不过他们向我展示了正确的道路;只需添加

\deactivatequoting

在序言中解决了这个问题。

babel用跟注english以及 也spanish可以达到同样的效果

\usepackage[spanish,english]{babel} 

相关内容