分离图形的定义和位置

分离图形的定义和位置

我在写论文时经常遇到的一个难题是让图表出现在正确的页面上。实际上,这个问题通常可以通过剪切\begin{figure} ... \end{figure}并粘贴到文档的较高位置来解决。

但是,该图在语义上与论文中的某个段落相关,因此将其定义保留在该段落附近的文本中更有意义。(然后编辑标题的人更有可能审查相关段落以进行并行更改。)

我想要的是能够在一个位置定义一个图形,但将其放置在其他地方,通常是在 tex 的较早位置。有谁能好地解决这个问题?


我的尝试:

为了尝试实现此功能,我可以创建一个\newcommand包含图形定义的命令,但我无法将该命令放在文档中较早的位置,因为它尚未定义。

这个问题提供了一种在创建之前使用宏的方法。但是,当图形定义位于宏内时,该方法会失败,其响应! TeX capacity exceeded, sorry [text input levels=15].似乎表明存在无限循环问题,但坦率地说,我对此的理解远远超出了我的能力范围。

答案1

您可以使用双程系统。

\documentclass{article}
\usepackage{environ}
\usepackage{graphicx}

\usepackage{lipsum}

\makeatletter
\newwrite\remember@figures
\AtBeginDocument{%
  \InputIfFileExists{\jobname.dft}{}{}%
  \immediate\openout\remember@figures=\jobname.dft
}
\AtEndDocument{\immediate\closeout\remember@figures}

\NewEnviron{dfigure}[1]{%
  \immediate\write\remember@figures{%
    \noexpand\rememberfigure{#1}{\unexpanded\expandafter{\BODY}}%
  }%
}
\newcommand{\placefigure}[2][tp]{%
    \csname remembered@figure@#2\endcsname{#1}
}
\newcommand{\rememberfigure}[2]{%
  \global\@namedef{remembered@figure@#1}##1{%
    \begin{figure}[##1]#2\end{figure}%
  }%
}
\makeatother

\begin{document}

\placefigure[!htp]{first}

\lipsum[1]

\begin{dfigure}{first}
\centering
\includegraphics[width=4cm]{example-image-a}
\caption{Example image A}
\end{dfigure}

\begin{dfigure}{second}
\centering
\includegraphics[width=4cm]{example-image-b}
\caption{Example image B}
\end{dfigure}

\lipsum[3-5]

\placefigure[b]{second}

\end{document}

环境dfigure将内容和定义它的键保存在辅助文件中,该文件在开始文档时读取。\placefigure您可以使用合适的定位选项将相应的图形放置在您喜欢的位置。

在此处输入图片描述

答案2

  • 我想你的意思是这样的——至少在这里你可以完全控制位置。
  • 我用的是这个float包。
  • 它提供了H放置选项,这意味着确切地这里 :)。

\documentclass{article}

\usepackage{float}
\usepackage{graphicx}
\usepackage{blindtext}

\begin{document}

\blindtext

\begin{figure}[H]
\includegraphics[width=\textwidth]{example-image-a}
\caption{1st picture}
\end{figure}

\blindtext

\begin{figure}[H]
\includegraphics[width=\textwidth]{example-image-b}
\caption{2nd picture}
\end{figure}

\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容