我在序言中使用了以下代码来对齐文档中的 pgfplots。
\pgfplotsset{
every axis/.append style={
scale only axis
},
/tikz/every picture/.append style={
trim axis left,
trim axis right,
}
}
但是最后一部分(/tikz/every picture/.append style...
)会破坏不使用 pgfplots 的 TikZ 图片的编译,因为其中没有轴。
目前,我必须注释掉代码的这一部分,然后编译所有纯 TikZ 绘图,然后取消注释并编译所有 pgfplots 图形,然后将它们混合在一起。我已经\tikzexternalize
在我的 preable 中这样做了,因此在编译完每个图形后,我将图形保存在单独的文件中。
这很麻烦。我该如何获得 pgfplots 对齐并避免此问题?
以下是重现该问题的 MWE:
\documentclass{article}
\usepackage{pgfplots,tikz}
\pgfplotsset{
every axis/.append style={
scale only axis
},
/tikz/every picture/.append style={
trim axis left,
trim axis right,
}
}
\begin{document}
\begin{tikzpicture}
\draw[very thick,->] (-1,-1) -- (1,1);
\end{tikzpicture}
\end{document}
答案1
您的代码明确请求应用边界框修改每一个图片。
我认为正确的解决方案是写一个命名样式(即类似于trimmed picture
的而不是every picture
),并在要应用该样式的每张图片中明确使用该命名样式(即\begin{tikzpicture}[trimmed pictured]
)。
答案2
我不确定这是否会导致间距问题或其他问题,但只需在每张图片上添加一个空轴即可消除错误:
\documentclass{article}
\usepackage{pgfplots,tikz}
\pgfplotsset{
every axis/.append style={
scale only axis
},
/tikz/execute at begin picture={
\begin{axis}, \end{axis},
}
/tikz/every picture/.append style={
trim axis left,
trim axis right,
}
}
\begin{document}
\begin{tikzpicture}
\draw[very thick,->] (-1,-1) -- (1,1);
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}
\addplot[domain=0:360] {sin(x)};
\end{axis}
\end{tikzpicture}
\end{document}