Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a problem with TikZ diagram, I don't get to make the diagram with babel under the brazil language. I used the code with french and everything is OK!

\documentclass[a4paper,12pt, brazil]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[body={16.5cm,24cm}]{geometry}
\usepackage{amsthm, amssymb}
\usepackage{babel}
\usepackage{comment} 
\usepackage{amsmath}
\usepackage{color}
\usepackage{graphicx}
\usepackage{tikz-cd}

\begin{document}

\begin{defi}

\[\begin{tikzcd}[column sep=small]
Y_1 \ar[dr, "\pi_1"'] \ar[rr, "f"]& & \ar[ld, "\pi_2"] Y_2 \\
& X &
\end{tikzcd}\]

\end{defi}

\end{document}
share|improve this question

2 Answers 2

up vote 4 down vote accepted

This is essentially the same as Tikz and babel error

\documentclass[a4paper,12pt, brazil]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}

\usepackage{tikz-cd}

\tikzset{
  every picture/.prefix style={
    execute at begin picture=\shorthandoff{"}
  }
}

\begin{document}

\[
\begin{tikzcd}[column sep=small]
Y_1 \ar[dr, "\pi_1"'] \ar[rr, "f"]& & \ar[ld, "\pi_2"] Y_2 \\
& X &
\end{tikzcd}
\]

\end{document}

Unfortunately, \usetikzlibrary{babel} doesn't seem to work with tikz-cd.

Update

As of tikz-cd version 0.9c (released 2014/10/20), the babel library is supported and the following works.

\documentclass[a4paper,12pt, brazil]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}

\usepackage{tikz-cd}[2014/10/20] % ensure it's version 0.9c or later
\usetikzlibrary{babel}

\begin{document}

\[
\begin{tikzcd}[column sep=small]
Y_1 \ar[dr, "\pi_1"'] \ar[rr, "f"]& & \ar[ld, "\pi_2"] Y_2 \\
& X &
\end{tikzcd}
\]

\end{document}
share|improve this answer

portuges.ldf (loaded by option brazil) makes " an active shorthand that disturbs the tikz-cd code. The shorthand can be disabled via \shorthandoff:

\documentclass[a4paper,12pt,brazil]{article}

\usepackage{babel}
\usepackage{tikz-cd}   

\begin{document}

\shorthandoff{"}
\[\begin{tikzcd}[column sep=small]
Y_1 \ar[dr, "\pi_1"'] \ar[rr, "f"]& & \ar[ld, "\pi_2"] Y_2 \\
& X &
\end{tikzcd}\]
\shorthandon{"}

\end{document}

(\usetikzlibrary{babel} didn't work for this example, tikz-cd seems to expect a " with catcode 12 (other), see \tikzcd@enablequotes.)

Patch version

The following example patches some TikZ macros to support the active quotes:

\documentclass[a4paper,12pt,brazil]{article}

\usepackage{babel}
\usepackage{tikz-cd}

\makeatletter
\shorthandon{"}
% Patch for tikzlibarycd.code.tex
\g@addto@macro\tikzcd@enablequotes{%
  \pgfkeys{%
    /handlers/first char syntax/\meaning"/.initial=\tikzcd@passquotes
  }%
}

% Patch for tikzlibraryquotes.code.tex
\def\active@tikz@quote@parser#1{\active@tikz@quote@@parser#1\pgf@stop}
\def\active@tikz@quote@@parser"#1"{%
  \pgfutil@ifnextchar\bgroup{%
    \tikz@quote@@parser@group{#1}}{%
    \pgfutil@ifnextchar'{%
      \tikz@quote@@parser@apo{#1}}{%
      \tikz@quote@@parser@normal{#1}}}}

\g@addto@macro\tikz@enable@node@quotes{%
  \pgfkeyssetvalue{/handlers/first char syntax/\meaning"}%
                  {\active@tikz@quote@parser}%
}
\g@addto@macro\tikz@enable@edge@quotes{%
  \pgfkeyssetvalue{/handlers/first char syntax/\meaning"}%
                  {\active@tikz@quote@parser}%
}
\g@addto@macro\tikz@enable@pic@quotes{%
  \pgfkeyssetvalue{/handlers/first char syntax/\meaning"}%
                  {\active@tikz@quote@parser}%
}
\shorthandoff{"}
\makeatother

\begin{document}

\[\begin{tikzcd}[column sep=small]
Y_1 \ar[dr, "\pi_1"'] \ar[rr, "f"]& & \ar[ld, "\pi_2"] Y_2 \\
& X &
\end{tikzcd}\]

\end{document}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.