Problema con babel y tikz usando \draw

Problema con babel y tikz usando \draw

Estoy probando el siguiente código:

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

pero no funciona. Tira los errores:

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

¿Qué puedo hacer si funciona bien sin el paquete babel?

Respuesta1

El problema es que el spanishmódulo de babelmarcas >y <caracteres activos para su gestión especial de citas en español.

Actualizar:

Con PGF/TikZ versión 3.0.0 existe una babelbiblioteca que soluciona los problemas producidos por los cambios en los códigos de categorías realizados por algunos babelmódulos, por lo que basta con cargar la biblioteca:

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

(Gracias aClaudio Fiandrinopor señalar esto ensu comentario).

PGF/TikZ versión 2.10

Para desactivar la redefinición no deseada de tikzpictures, pero manteniéndola para otras partes del documento, puede utilizar

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

para cada tikzpicture. Tenga en cuenta que este enfoque tiene dos ventajas:

  1. No se requieren paquetes adicionales.

  2. También produce el resultado deseado cuando se utiliza la versión del comando \tikz(consulte el código de ejemplo a continuación).

El código:

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

ingrese la descripción de la imagen aquí

Como nota al margen, no utilice pdftexla opción; Los sistemas LaTeX modernos detectan el controlador automáticamente.

Respuesta2

Como señala Malipivo, la spanishopción de babelactiva >. Puede hacerlo inactivo dentro de (todo) el tikzpictureentorno localmente. Agregue estos en su preámbulo:

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

Código completo:

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

ingrese la descripción de la imagen aquí

Respuesta3

Si no necesita usar spanish quotes, simplemente agréguelo es-noquotinga las opciones de Babel y TiKZlas flechas aparecerán nuevamente.

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

ingrese la descripción de la imagen aquí

Si necesita spanish quotesutilizar la nueva babelbiblioteca TiKZ 3.0 (como sugirió Claudio). Aquí tienes un ejemplo:

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

ingrese la descripción de la imagen aquí

Respuesta4

No sé por qué, pero ninguna de las respuestas anteriores me ha funcionado. Sin embargo, me mostraron el camino correcto; agregando solo

\deactivatequoting

en el preámbulo se solucionó el problema.

Llamar babelcon englishy también spanishfunciona

\usepackage[spanish,english]{babel} 

información relacionada