Я пробую следующий код:
\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
Чтобы деактивировать нежелательное переопределение для tikzpicture
s, но сохранить его для других частей документа, можно использовать
execute at begin picture={\deactivatequoting},
execute at end picture={\activatequoting}
для каждого tikzpicture
. Обратите внимание, что этот подход имеет два преимущества:
Никаких дополнительных пакетов не требуется.
Он также дает желаемый результат при использовании командной версии
\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
с помощью english
well as spanish
тоже сработает
\usepackage[spanish,english]{babel}