我只是想获得“一切合一”。我希望使用
- pgfplots 的 groupplot 库
- subcaption 能够引用 groupplot 中的每个单个图。另请参阅groupplot 中的 PGF 标签与图片列表,其中的答案展示了一种设置标签的好方法,而无需在单个图之间使用空格。
- tikzscale 包可以精确地渲染线宽和字体大小,同时使绘图的宽度精确地
\linewidth
现在的重点是,tikzscale 包会诱导那个\includegraphics
而不是\input
tikz 文件。这似乎会导致 subcaption 使用的计数器出现问题。这是一个小的 MWE:
\documentclass{article}
\usepackage{filecontents}
\usepackage{subcaption}
\usepackage{pgfplots}
\usepackage{tikzscale}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=newest}
\begin{filecontents}{plots.tikz}
\begin{tikzpicture}
\begin{groupplot}[
group style = {group size=2 by 1,
horizontal sep=1cm,
},
width = 1/2*\linewidth-1cm,
height = 0.2\textheight,
]
\nextgroupplot
\node[text width=1cm,inner sep=0pt,anchor=north west] at (rel axis cs: 0,1) {\subcaption{\label{first}}};
\addplot {x};
\nextgroupplot
\node[text width=1cm,inner sep=0pt,anchor=south west] at (rel axis cs: 0,0) {\subcaption{\label{second}}};
\addplot {x*x};
\end{groupplot}
\end{tikzpicture}
\end{filecontents}
\begin{document}
\begin{figure}
\input{plots.tikz}
\caption{bla}
\end{figure}
\begin{figure}
\includegraphics[width=\linewidth]{plots.tikz}
\caption{blub}
\end{figure}
\end{document}
除了这不是真正的 M西E,因为我无法两次标记相同的子标题(但这当然不是正常用例),真正的问题是第二个图的标记:它不是(a)
,(b)
而是(i)
。(j)
通过改变组图中的图数,“起始索引”也会变化。如果有六个图,它将从开始(y)
并遇到计数器错误。
所以我的问题是:问题到底是什么,是否存在一种解决方法,而不会丢失上面列表的功能?
答案1
添加\setcounter
在 plots.tikz 中
\documentclass{article}
\usepackage{filecontents}
\usepackage{subcaption}
\usepackage{pgfplots}
\usepackage{tikzscale}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=newest}
\begin{filecontents}{plots.tikz}
\setcounter{subfigure}{0}% assuming no other subfigures in figure
\begin{tikzpicture}
\begin{groupplot}[
group style = {group size=2 by 1,
horizontal sep=1cm,
},
width = 1/2*\linewidth-1cm,
height = 0.2\textheight,
]
\nextgroupplot
\node[text width=1cm,inner sep=0pt,anchor=north west] at (rel axis cs: 0,1) {\subcaption{}\label{first}};% \label should go after
\addplot {x};
\nextgroupplot
\node[text width=1cm,inner sep=0pt,anchor=south west] at (rel axis cs: 0,0) {\subcaption{}\label{second}};% not inside
\addplot {x*x};
\end{groupplot}
\end{tikzpicture}
\end{filecontents}
\begin{document}
\begin{figure}
\input{plots.tikz}
\caption{bla}
\end{figure}
\begin{figure}
\includegraphics[width=\linewidth]{plots.tikz}
\caption{blub}
\end{figure}
\end{document}