修复将 pgfplots 样式附加到所有图片,破坏纯 TikZ 编译的问题

修复将 pgfplots 样式附加到所有图片,破坏纯 TikZ 编译的问题

我在序言中使用了以下代码来对齐文档中的 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}

相关内容