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

序言中解決了這個問題。

babeland呼叫englishspanish有竅門

\usepackage[spanish,english]{babel} 

相關內容