Problema com babel e tikz usando \draw

Problema com babel e tikz usando \draw

Estou tentando o próximo 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}

mas não funciona. Ele lança os erros:

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

O que posso fazer se funcionar bem sem o pacote babel?

Responder1

O problema é que o spanishmódulo de babelmarcas >e <caracteres ativos para sua gestão especial de cotações em espanhol.

Atualizar:

Com o PGF/TikZ versão 3.0.0 existe uma babelbiblioteca que resolve os problemas produzidos pelas alterações nos códigos de categoria feitas por alguns babelmódulos, então basta carregar a 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}

(Graças aClaudio Fiandrinopor apontar isso emo comentário dele).

PGF/TikZ versão 2.10

Para desativar a redefinição indesejada para tikzpictures, mas mantê-la para outras partes do documento, você pode usar

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

para cada tikzpicture. Observe que essa abordagem tem duas vantagens:

  1. Não são necessários pacotes extras.

  2. Também produz o resultado desejado ao usar a versão do comando \tikz(veja o código de exemplo abaixo).

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

insira a descrição da imagem aqui

Como observação lateral, não use pdftexa opção; os sistemas LaTeX modernos detectam o driver automaticamente.

Responder2

Conforme observado por Malipivo, a spanishopção de babeltorna >ativa. Você pode torná-lo inativo apenas dentro de (todos) o tikzpictureambiente localmente. Adicione-os ao seu 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}

insira a descrição da imagem aqui

Responder3

Se não precisar usar spanish quotes, basta adicionar es-noquotingas opções do babel e TiKZas setas aparecerão novamente.

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

insira a descrição da imagem aqui

Se precisar spanish quotesuse a nova babelbiblioteca TiKZ 3.0 (como sugeriu Claudio). Aqui você tem um exemplo:

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

insira a descrição da imagem aqui

Responder4

Não sei por que, mas nenhuma das respostas anteriores funcionou para mim. Eles me mostraram o caminho certo; adicionando apenas

\deactivatequoting

no preâmbulo resolveu o problema.

Fazer call babelcom englishe também spanishfunciona

\usepackage[spanish,english]{babel} 

informação relacionada