Проблема с 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

Чтобы деактивировать нежелательное переопределение для tikzpictures, но сохранить его для других частей документа, можно использовать

  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использовать новую babelбиблиотеку TiKZ 3.0 (как предложил Клаудио). Вот пример:

\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с помощью englishwell as spanishтоже сработает

\usepackage[spanish,english]{babel} 

Связанный контент