如何才能使一系列图像(带有一些文本)以最少的空白流动?

如何才能使一系列图像(带有一些文本)以最少的空白流动?

我正在尝试创建一个主要包含图像(但偶尔在图像后包含一些文本)的 LaTeX 文档。我目前在序言中有以下内容:

\def \ifempty#1{\def\temp{#1} \ifx\temp\empty }

\newcommand{\image}[2]{
    \ifempty{#2}
        \begin{figure}[H]
            \includegraphics[width=\textwidth]{#1}
        \end{figure}
    \else
        \begin{figure}[H]
            \includegraphics[width=\textwidth]{#1}
            \caption*{\textit{\Large{#2}}}
        \end{figure}
    \fi
}

然后当我添加图像时我使用:

\image{imageName}{optionalText}

这会在图像之间插入大量空白。我希望每幅图像都紧挨着下一幅图像,除非图像无法在页面上显示,在这种情况下会创建一个新页面(基本上,我希望图像的排列方式与其他任何默认方式相同)。

我尝试按照建议更改[H]选项caption这个问题并尝试了各种建议叶上这篇 WikiBooks 文章,但无法使图像正常流动。

如何才能使图像正常流动?

答案1

\def \ifempty#1{\def\temp{#1} \ifx\temp\empty }

每次使用时,总是会在输出中添加一个空格标记,这是你打算

\def \ifempty#1{\def\temp{#1}\ifx\temp\empty }

但是,这样定义通常并不安全,\if因为它是一个宏,而不是一个 tex,所以如果与\if..其他宏结合,它就不会自然起作用。if

\iffalse
  \ifempty{}
    yes
   \else
    no
   \fi
\fi

看起来嵌套得很好,但\ifempty不会被视为如果那么\iffalse将匹配\else排版no,第二个\fi将产生错误。

对于您的主宏,我将省略figure仅添加垂直空间的环境。

\newcommand{\image}[2]{% 
  \par
   \noindent
   \begin{minipage}{\textwidth}%
            \includegraphics[width=\textwidth]{#1}%
  \par
   {\Large\itshape #2\par}%
   \end{minipage}%
  \par
}

使用这种形式你不需要测试是否#2为空因为在这种情况下它不会做任何事情。

相关内容