Problem mit Babel und Tikz bei Verwendung von \draw

Problem mit Babel und Tikz bei Verwendung von \draw

Ich versuche den nächsten Code:

\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}

aber es funktioniert nicht. Es werden die folgenden Fehler ausgegeben:

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

Was kann ich tun, wenn es ohne das Babel-Paket richtig funktioniert?

Antwort1

Das Problem besteht darin, dass das spanishModul für die Verwaltung spanischer Zitate spezielle Zeichen babelerstellt >und aktiviert.<

Aktualisieren:

Mit PGF/TikZ Version 3.0.0 gibt es eine babelBibliothek, die die Probleme löst, die durch von einigen Modulen vorgenommene Änderungen an Kategoriecodes entstehen babel. Es reicht also aus, die Bibliothek zu laden:

\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}

(Dank anClaudio Fiandrinofür den Hinweis insein Kommentar).

PGF/TikZ Version 2.10

Um die unerwünschte Neudefinition für tikzpictures zu deaktivieren, sie aber für andere Teile des Dokuments beizubehalten, können Sie

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

für jedes tikzpicture. Beachten Sie, dass dieser Ansatz zwei Vorteile hat:

  1. Es sind keine zusätzlichen Pakete erforderlich.

  2. Auch bei Verwendung der Kommandoversion \tikz(siehe Beispielcode unten) wird das gewünschte Ergebnis erzielt.

Der Code:

\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}

Bildbeschreibung hier eingeben

Als Randbemerkung: Verwenden Sie pdftexdie Option nicht; moderne LaTeX-Systeme erkennen den Treiber automatisch.

Antwort2

Wie von Malipivo angemerkt, ist die spanishOption „ aktiv“ aktiv. Sie können es nur lokal innerhalb (der gesamten) Umgebung inaktiv machen . Fügen Sie Folgendes in Ihre Präambel ein:babel>tikzpicture

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

Vollständiger Code:

\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}

Bildbeschreibung hier eingeben

Antwort3

Wenn Sie es nicht verwenden müssen spanish quotes, fügen Sie es einfach es-noquotingzu den Babel-Optionen hinzu und TiKZdie Pfeile werden wieder angezeigt.

\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} 

Bildbeschreibung hier eingeben

Wenn Sie spanish quotesdie neue TiKZ 3.0-Bibliothek verwenden müssen babel(wie von Claudio vorgeschlagen). Hier ist ein Beispiel:

\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}

Bildbeschreibung hier eingeben

Antwort4

Ich weiß nicht warum, aber keine der vorherigen Antworten hat bei mir funktioniert. Sie haben mir jedoch den richtigen Weg gezeigt; indem ich einfach

\deactivatequoting

in der Präambel wurde das Problem behoben.

Anrufen babelmit englishsowie spanishfunktioniert auch

\usepackage[spanish,english]{babel} 

verwandte Informationen