有人可以解释一下为什么下面的代码可以完美编译:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\pgfplotsset{/pgf/number format/.cd, 1000 sep={}, assume math mode=true}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
width=4cm,
height=4cm,
ymin=-0.5,
ymax=0,
]
\addplot [forget plot]
table[row sep=crcr]{%
5 -0.000535\\
};
\end{axis}
\end{tikzpicture}
\end{document}
如果我想
ymin=-0.1,
它不再编译。错误消息:
Missing $ inserted.
可能答案的线索:
如果删除数学模式,则两种情况下都可以进行编译。但我不想删除它。
如果我有
ymin=-0.1
和ymax=0.5
,它也会编译......
嗯...我不明白。
答案1
您的尝试失败了,因为当您更改为时,PGFPlots 会改变ytick
s/yticklabels
的绘制方式(见左图)。这当然不能在文本模式下绘制,因为在文本模式下, 和都是未知的/无法解释的。ymin
-0.1
\cdot
^
yticklabels
为了避免这个问题,你可以将“back”的数字格式改为fixed
(见右图)。(你yticklabel style
也可以选择将该部分移至序言中。)
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
/pgf/number format/.cd,
1000 sep={},
assume math mode=true,
}
\begin{document}
% dummy plot to show where the problem is coming from
\begin{tikzpicture}
\begin{axis}[
width=4cm,
height=4cm,
ymin=-0.1,
ymax=0,
% don't assume math mode
/pgf/number format/assume math mode=false,
]
\addplot table {
5 -0.000535
};
\end{axis}
\end{tikzpicture}
% plot showing how to circumvent the problem
\begin{tikzpicture}
\begin{axis}[
width=4cm,
height=4cm,
ymin=-0.1,
ymax=0,
% change number format to `fixed'
yticklabel style={
/pgf/number format/fixed,
% % (optionally change the `precision' to your needs)
% /pgf/number format/precision=2,
},
]
\addplot table {
5 -0.000535
};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
如果不需要assume math mode=true
这个特定的tikzpicture
,您可以传递/pgf/number format/assume math mode=false
给axis
环境选项或tikzpicture
环境选项以避免错误。