有没有办法自动为一系列图形生成标签和标题?

有没有办法自动为一系列图形生成标签和标题?

我有一个图片列表,我使用“foreach”循环将其插入到我的文档中。有没有办法在 foreach 循环中为每个图片生成标签?我有以下代码,但运行它会产生标题,但没有标签!

我的示例如下:

       \foreach \x in \imageNames
{
    \begin{figure}[H]
    \centering
        \includegraphics[max size={\textwidth}{\textheight}]{figures/TGA-DTG/\x.png}
        \caption{\x}
        \foreach \y in {1,2, 3,...,64}
        {\label{fig:DTG\y}}
    \end{figure}
}

序言部分有:

    \newcommand*{\imageNames}
{AFCO 01-JAN-19,AFCO 02-NOV-18,AFCO 03-APR-19,AFCO 03-JAN-19,%
AFCO 03-OCT-18,AFCO 05-DEC-18,AFCO 05-JUL-18,AFCO 05-MAR-19,% 
AFCO 05-NOV-18,AFCO 06-FEB-19,AFCO 09-JAN-19,AFCO 12-DEC-18,% 
AFCO 13-DEC-18,AFCO 14-MAR-19,AFCO 14-OCT-18,AFCO 17-DEC-18,% 
AFCO 24-NOV-18,AFCO 27-DEC-18,AFCO 27-NOV-18,AFCO 28-FEB-19,% 
AFCO 30-DEC-18,AFCO 30-JAN-19,AUS 100,BLUESCOPE,BUSTY BLEND,BUSTY FINES,%
BUSTY IN BASE,COKE BREEZE BLEND,COLOMBIAN,FYF,IJmuiden 50CRI,MORFA 02-FEB-21,%
MORFA 14-JAN-21,MORFA 16-JAN-21,MORFA 18-JAN-21,MORFA 21-JAN-21,MORFA 29-JAN-21,% 
MORFA FLOAT 02-FEB-21,MORFA FLOAT 23-02-21,MORFA FLOAT 3-FEB-21,% 
MORFA FLOAT 27-JAN-21,MORFA FLOAT 28-JAN-21,MORFA FLOAT 30-JAN-21,% 
MORFA GROUND 1,MORFA GROUND 2,MORFA GROUND 3,MORFA GROUND 4,% 
MORFA GROUND 5,MORFA GROUND 6,MORFA GROUND 7,MORFA SINK 23-FEB-21,% 
MORFA SINK 24-FEB-21,MORFA SINK 27-JAN-21,MORFA SINK 28-JAN-21,%
MORFA SINK 30-JAN-21,MORFA WK 1,MORFA WK 39,MORFA WK 4,MORFA WK 8,POLISH 100,%
REF 3 BLEND 2,RISUN 10-JUL-18,RISUN ERINI P,US LV 50-50,US MV}

答案1

我首先尝试使用 TikZ 数组,但没有引号它就变成了数字,而有了引号它就不会被视为数组。

我尝试了 xstring。虽然可以工作,但效果并不好。

哦,LaTeX 不喜欢在队列中有那么多浮点数。

\documentclass[draft]{article} 
\usepackage[export]{adjustbox}
\usepackage{tikz}
\usepackage{xstring}

  \newcommand*{\imageNames}
{,AFCO 01-JAN-19,AFCO 02-NOV-18,AFCO 03-APR-19,AFCO 03-JAN-19,%
AFCO 03-OCT-18,AFCO 05-DEC-18,AFCO 05-JUL-18,AFCO 05-MAR-19,% 
AFCO 05-NOV-18,AFCO 06-FEB-19,AFCO 09-JAN-19,AFCO 12-DEC-18,% 
AFCO 13-DEC-18,AFCO 14-MAR-19,AFCO 14-OCT-18,AFCO 17-DEC-18,% 
AFCO 24-NOV-18,AFCO 27-DEC-18,AFCO 27-NOV-18,AFCO 28-FEB-19,% 
AFCO 30-DEC-18,AFCO 30-JAN-19,AUS 100,BLUESCOPE,BUSTY BLEND,BUSTY FINES,%
BUSTY IN BASE,COKE BREEZE BLEND,COLOMBIAN,FYF,IJmuiden 50CRI,MORFA 02-FEB-21,%
MORFA 14-JAN-21,MORFA 16-JAN-21,MORFA 18-JAN-21,MORFA 21-JAN-21,MORFA 29-JAN-21,% 
MORFA FLOAT 02-FEB-21,MORFA FLOAT 23-02-21,MORFA FLOAT 3-FEB-21,% 
MORFA FLOAT 27-JAN-21,MORFA FLOAT 28-JAN-21,MORFA FLOAT 30-JAN-21,% 
MORFA GROUND 1,MORFA GROUND 2,MORFA GROUND 3,MORFA GROUND 4,% 
MORFA GROUND 5,MORFA GROUND 6,MORFA GROUND 7,MORFA SINK 23-FEB-21,% 
MORFA SINK 24-FEB-21,MORFA SINK 27-JAN-21,MORFA SINK 28-JAN-21,%
MORFA SINK 30-JAN-21,MORFA WK 1,MORFA WK 39,MORFA WK 4,MORFA WK 8,POLISH 100,%
REF 3 BLEND 2,RISUN 10-JUL-18,RISUN ERINI P,US LV 50-50,US MV,}

\begin{document}

\foreach \y in {1,...,32}% too many will crash
{
    \begin{figure}[p]% only [p] can fill an entire page
    \centering
        \count1=\y\relax
        \count2=\numexpr \y+1\relax
        \StrBetween[\count1,\count2]{\imageNames}{,}{,}[\x]%
        \includegraphics[max size={\textwidth}{\textheight}]{figures/TGA-DTG/\x.png}
        \caption{\x}
        \label{fig:DTG\y}
    \end{figure}
}
\end{document}

只是为了好玩,这使用了一个\csname数组。

请注意,在宏名称中包含数字的唯一方法是使用\csname ... \endcsname

\documentclass[draft]{article} 
\usepackage[export]{adjustbox}
\usepackage{tikz}

  \newcommand*{\imageNames}
{AFCO 01-JAN-19,AFCO 02-NOV-18,AFCO 03-APR-19,AFCO 03-JAN-19,%
AFCO 03-OCT-18,AFCO 05-DEC-18,AFCO 05-JUL-18,AFCO 05-MAR-19,% 
AFCO 05-NOV-18,AFCO 06-FEB-19,AFCO 09-JAN-19,AFCO 12-DEC-18,% 
AFCO 13-DEC-18,AFCO 14-MAR-19,AFCO 14-OCT-18,AFCO 17-DEC-18,% 
AFCO 24-NOV-18,AFCO 27-DEC-18,AFCO 27-NOV-18,AFCO 28-FEB-19,% 
AFCO 30-DEC-18,AFCO 30-JAN-19,AUS 100,BLUESCOPE,BUSTY BLEND,BUSTY FINES,%
BUSTY IN BASE,COKE BREEZE BLEND,COLOMBIAN,FYF,IJmuiden 50CRI,MORFA 02-FEB-21,%
MORFA 14-JAN-21,MORFA 16-JAN-21,MORFA 18-JAN-21,MORFA 21-JAN-21,MORFA 29-JAN-21,% 
MORFA FLOAT 02-FEB-21,MORFA FLOAT 23-02-21,MORFA FLOAT 3-FEB-21,% 
MORFA FLOAT 27-JAN-21,MORFA FLOAT 28-JAN-21,MORFA FLOAT 30-JAN-21,% 
MORFA GROUND 1,MORFA GROUND 2,MORFA GROUND 3,MORFA GROUND 4,% 
MORFA GROUND 5,MORFA GROUND 6,MORFA GROUND 7,MORFA SINK 23-FEB-21,% 
MORFA SINK 24-FEB-21,MORFA SINK 27-JAN-21,MORFA SINK 28-JAN-21,%
MORFA SINK 30-JAN-21,MORFA WK 1,MORFA WK 39,MORFA WK 4,MORFA WK 8,POLISH 100,%
REF 3 BLEND 2,RISUN 10-JUL-18,RISUN ERINI P,US LV 50-50,US MV}

\newcounter{index}
\foreach \x in \imageNames {% create \imageName1, \imageName2. ...
  \stepcounter{index}%
  \expandafter\xdef\csname imageName\theindex\endcsname{\x}%
}

\begin{document}
\listoffigures

\foreach \y in {1,...,32}% too many will crash
{
    \begin{figure}[p]% only [p] can fill an entire page
    \centering
        \includegraphics[max size={\textwidth}{\textheight}]{figures/TGA-DTG/\csname imageName\y\endcsname.png}
        \caption{\csname imageName\y\endcsname}
        \label{fig:DTG\y}
    \end{figure}
}

\end{document}

答案2

您正在使用\foreachPGF/TikZ 代码库,这意味着您可以使用count可选的附加功能来跟踪已处理的图像数量。

\documentclass[draft]{article}
%\url{https://tex.stackexchange.com/q/654216/86}
\usepackage{lipsum}
\usepackage{pgffor}

\newcommand*{\imageNames}
{AFCO 01-JAN-19,AFCO 02-NOV-18,AFCO 03-APR-19,AFCO 03-JAN-19,%
AFCO 03-OCT-18,AFCO 05-DEC-18,AFCO 05-JUL-18,AFCO 05-MAR-19,% 
AFCO 05-NOV-18,AFCO 06-FEB-19,AFCO 09-JAN-19,AFCO 12-DEC-18,% 
AFCO 13-DEC-18,AFCO 14-MAR-19,AFCO 14-OCT-18,AFCO 17-DEC-18,% 
AFCO 24-NOV-18,AFCO 27-DEC-18,AFCO 27-NOV-18,AFCO 28-FEB-19,% 
AFCO 30-DEC-18,AFCO 30-JAN-19,AUS 100,BLUESCOPE,BUSTY BLEND,BUSTY FINES,%
BUSTY IN BASE,COKE BREEZE BLEND,COLOMBIAN,FYF,IJmuiden 50CRI,MORFA 02-FEB-21,%
MORFA 14-JAN-21,MORFA 16-JAN-21,MORFA 18-JAN-21,MORFA 21-JAN-21,MORFA 29-JAN-21,% 
MORFA FLOAT 02-FEB-21,MORFA FLOAT 23-02-21,MORFA FLOAT 3-FEB-21,% 
MORFA FLOAT 27-JAN-21,MORFA FLOAT 28-JAN-21,MORFA FLOAT 30-JAN-21,% 
MORFA GROUND 1,MORFA GROUND 2,MORFA GROUND 3,MORFA GROUND 4,% 
MORFA GROUND 5,MORFA GROUND 6,MORFA GROUND 7,MORFA SINK 23-FEB-21,% 
MORFA SINK 24-FEB-21,MORFA SINK 27-JAN-21,MORFA SINK 28-JAN-21,%
MORFA SINK 30-JAN-21,MORFA WK 1,MORFA WK 39,MORFA WK 4,MORFA WK 8,POLISH 100,%
REF 3 BLEND 2,RISUN 10-JUL-18,RISUN ERINI P,US LV 50-50,US MV}

\begin{document}

\foreach[count=\y] \x in \imageNames
{
  \begin{figure}[p]
  \centering
  Float: \x, Figure: \y
%  \includegraphics[max size={\textwidth}{\textheight}]{figures/TGA-DTG/\x.png}
  \caption{\x}
  \label{fig:DTG\y}
  \end{figure}

  \lipsum[1]
}


\end{document}

我在每个图之间添加了一个虚拟段落(来自lipsum包),以避免“太多浮动”问题。我认为这是你在这里试图解决的问题的一个次要问题。此外,由于我没有实际的图像,所以我注释掉了\includegraphics

相关内容