使用 TiKZ-scale 进行精确缩放

使用 TiKZ-scale 进行精确缩放

我使用tikzscale将所有图形缩放到相同大小。这种方法效果很好,但有时缩放后的宽度会有差异。我可以手动调整缩放参数(使用pdfcrop并查看生成的页面宽度),但如果尺寸完全一致,那就更容易了tikzscale

在这个例子中,第一个图的宽度与框相比似乎有点太窄,而第二​​个图似乎是最宽的图形。

在此处输入图片描述

平均能量损失

\documentclass{article}

\usepackage{filecontents}

\usepackage{tikz, tikzscale, pgfplots}
\usetikzlibrary{calc}

\begin{document}

\begin{filecontents}{fig.tikz}
\begin{tikzpicture}
\begin{axis}[]
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\end{filecontents}

\begin{filecontents}{fig2.tikz}
\begin{tikzpicture}
\draw (0,0) rectangle (1,0.2);
\end{tikzpicture}
\end{filecontents}

\begin{filecontents}{fig3.tikz}
\begin{tikzpicture}
\begin{axis}[yticklabel style={overlay}]
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\end{filecontents}


\includegraphics[width=1.00\linewidth, axisratio=4]{fig.tikz} 

\vspace{0.1cm}

\includegraphics[width=1.00\linewidth]{fig2.tikz} 

\vspace{0.1cm}

\includegraphics[width=1.00\linewidth, axisratio=4]{fig3.tikz} 


\end{document}

答案1

tikzscale正确地将两个轴缩放到整个文本宽度。但是,刻度标签周围有空白,缩放时会考虑到这一点。

您可以通过设置删除刻度标签周围的空白

\pgfplotsset{
    xticklabel style={
        inner xsep=0pt
    },
    yticklabel style={
        inner xsep=0pt,
        xshift=-0.333em
    }
}

(请注意xshifty 刻度标签,因为它们使用了 进行inner xsep定位)

\documentclass{article}

\usepackage{filecontents}

\usepackage{tikz, tikzscale, pgfplots}
\usetikzlibrary{calc}

\begin{document}

\pgfplotsset{
    xticklabel style={
        inner xsep=0pt
    },
    yticklabel style={
        inner xsep=0pt,
        xshift=-0.333em
    }
}

\begin{filecontents}{fig.tikz}
\begin{tikzpicture}
\begin{axis}[]
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\end{filecontents}

\begin{filecontents}{fig2.tikz}
\begin{tikzpicture}[remember picture]
\draw (0,0) coordinate (A) rectangle (1,0.2) coordinate (B);
\end{tikzpicture}
\end{filecontents}

\begin{filecontents}{fig3.tikz}
\begin{tikzpicture}
\begin{axis}[yticklabel style={overlay}]
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\end{filecontents}


\includegraphics[width=1.00\linewidth, axisratio=4]{fig.tikz} 

\vspace{0.1cm}

\includegraphics[width=1.00\linewidth]{fig2.tikz} 

\vspace{0.1cm}

\includegraphics[width=1.00\linewidth, axisratio=4]{fig3.tikz} 

\tikz[remember picture, overlay, red] \draw (A) -- +(0,6cm) -- +(0,-4cm)
(B) -- +(0,4cm) -- +(0,-6cm);
\end{document}

相关内容