I have to use the tikzlibrary babel to avoid conflicts with the french babel package. Nevertheless, I face a problem each time I try to draw a plot inside a margin note (Important: My plot is created with pgfplots and I use the marginnote package).
\documentclass[dvipsnames,11pt]{article}
\usepackage{amsfonts}
\usepackage[a4paper,vmargin=2cm,left=1cm,textwidth=15cm,marginparwidth=4cm]{geometry}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{lipsum}
\usepackage{marginnote}
\usepackage[french]{babel}
\pgfplotsset{compat=1.16}
\usetikzlibrary{babel}
\begin{document}
% The code below works (It doesn't use pgfplots).
\lipsum[3]
\marginnote{\begin{tikzpicture}\draw (0,0) -- (1,1); \end{tikzpicture}}
\lipsum[4]
% The code below doesn't work (conflict with \usetikzlibrary{babel})
\lipsum[3]
\marginnote{
\begin{tikzpicture}
\begin{axis}[width=3cm, axis lines=none]
\addplot [
domain=0:1,
samples=10,
]
{x};
\end{axis}
\end{tikzpicture}
}
\lipsum[4]
\end{document}
The error I get is:
Argument of \pgfplots@addplotimpl@expression@curly has an extra }. \lipsum
So I wonder if there is a safely way to use the tikzlibrary babel in this scenario.
If I don't use a margin note, I could remove the problematic library import line \usetikzlibrary{babel}
using the workaround \shorthandoff
as described in this post. See also the code below:
\documentclass[dvipsnames,11pt]{article}
\usepackage{amsfonts}
\usepackage[a4paper,vmargin=2cm,left=1cm,textwidth=15cm,marginparwidth=4cm]{geometry}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{lipsum}
\usepackage{marginnote}
\usepackage[french]{babel}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{fillbetween}
%\usetikzlibrary{babel}
\begin{document}
% The code below doesn't work without \usetikzlibrary{babel} or \shorthandoff{:}
\begin{tikzpicture}
\shorthandoff{:} % line added
\begin{axis}[
axis lines = none,
]
\addplot [name path=A,domain=-5:1,samples=100] {1/pi*1/(x^2+1)};
\addplot [name path=B,domain=-5:1] {0};
\addplot [color=blue!30!white] fill between [
of=A and B, soft clip = {domain = -5:1} % clash with the babel french package because of this line.
];
\addplot [
domain=-5:5,
samples=100,
color=black,
]
{1/pi*1/(x^2+1)};
\end{axis}
\end{tikzpicture}
\end{document}
But if I wrap the same code inside a marginnote command, I get fatal errors in all cases:
\documentclass[dvipsnames,11pt]{article}
\usepackage{amsfonts}
\usepackage[a4paper,vmargin=2cm,left=1cm,textwidth=15cm,marginparwidth=4cm]{geometry}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{lipsum}
\usepackage{marginnote}
\usepackage[french]{babel}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{fillbetween}
%\usetikzlibrary{babel}
\begin{document}
% I don't know how to make this code work with or without using \usetikzlibrary{babel}...
\marginnote{
\begin{tikzpicture}
%\shorthandoff{:} If I uncomment this line, I get the error: Argument of \pgfkeys@code has an extra }. \end
\begin{axis}[
axis lines = none,
]
\addplot [name path=A,domain=-5:1,samples=100] {1/pi*1/(x^2+1)};
\addplot [name path=B,domain=-5:1] {0};
\addplot [color=blue!30!white] fill between [
of=A and B, soft clip = {domain = -5:1}
];
\addplot [
domain=-5:5,
samples=100,
color=black,
]
{1/pi*1/(x^2+1)};
\end{axis}
\end{tikzpicture}}
\end{document}
How to solve the above problem?
tikzpicture
in a\savebox
, which you can use in\marginnote{...}
.\savebox
but the problems are the same as decribed above. But I've found a solution to my problem that I describe below.