是否可以组合使用 subcaption、tikzscale 和 groupplots?

是否可以组合使用 subcaption、tikzscale 和 groupplots?

我只是想获得“一切合一”。我希望使用

  1. pgfplots 的 groupplot 库
  2. subcaption 能够引用 groupplot 中的每个单个图。另请参阅groupplot 中的 PGF 标签与图片列表,其中的答案展示了一种设置标签的好方法,而无需在单个图之间使用空格。
  3. tikzscale 包可以精确地渲染线宽和字体大小,同时使绘图的宽度精确地\linewidth

现在的重点是,tikzscale 包会诱导那个\includegraphics而不是\inputtikz 文件。这似乎会导致 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}

相关内容