我正在尝试下一个代码:
\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
。请注意,这种方法有两个优点:
不需要额外的包裹。
当使用命令版本时,它也会产生所需的结果
\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
使用新的babel
TiKZ 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}