如何在所有小页面的文本和小页面图形之间添加垂直空间?

如何在所有小页面的文本和小页面图形之间添加垂直空间?

我正在编写说明书,我不能使用图片,因为图片需要直接位于它们所显示的步骤下方。为了让图片位于相应的文本下方,每当我想放置图片时,我都会使用以下代码。

\begin{minipage}{1\linewidth}
    \vspace{5mm}
    \centering
    \includegraphics[width=1\textwidth]{database}
    \captionof{figure}{Desktop icon of simulator app}
\end{minipage}

我不喜欢的事情(作为程序员和人类)是,为了在图形上方获得垂直填充/空间,我每次都需要使用 vspace 并指定空间。

有没有办法可以配置所有 minipage 使其上方具有相同的 vspace?并且最好甚至不在 minipage 中包含 vspace 命令?

谢谢!

答案1

我建议你这样做不是重新定义minipage环境本身:您可能仍需要原始版本来做其他事情。相反,定义一个执行您想要的操作的命令,即插入带有标题的插图。正如@Bernard曾指出,实际上不需要minipage:一个center环境就可以了。我做了一个微小的低级定制,以确保在插图之前不会出现分页符:这enumitem也可以通过包来实现,但我不太愿意为了这个微小的调整而加载整个包……

% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

\usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

\usepackage{graphicx}
\usepackage{capt-of}

\usepackage{mwe} % for this Minimal Working Example only

\makeatletter

\newcommand*\illustration[2]{%
    % keep illustration on the same page as preceding text:
    \begingroup
        \@beginparpenalty \@M
        \begin{center}%
            \includegraphics[width=\linewidth]{#1}%
            \captionof{figure}{#2}%
        \end{center}%
    \endgroup
}

\makeatother



\begin{document}

\lipsum[1]
\illustration{image-a}{The letter~``A''}
\lipsum[2]
\illustration{image-b}{The letter~``B''}
\lipsum[2]
\illustration{image-c}{The letter~``C''}
\lipsum[4]

\end{document}

编辑: 再想想,一个minipage环境由于\captionof命令的实现方式,需要避免图像和其标题之间可能出现的分页符。以下是考虑到此问题的不同解决方案:

% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

\usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

\usepackage{graphicx}
\usepackage{capt-of}

\usepackage{mwe} % for this Minimal Working Example only

\makeatletter

\newcommand*\illustration[2]{%
    \par % end previous paragraph (if necessary)
    \addpenalty{\@M}% prohibit page break
    \addvspace{\bigskipamount}% or "\medskipamount"...
    \noindent
    \begin{minipage}{\linewidth}%
        \centering
        \includegraphics[width=\textwidth]{#1}%
        \captionof{figure}{#2}%
    \end{minipage}\par
    \addpenalty{-\@lowpenalty}%
    \addvspace{\bigskipamount}%
}

\makeatother



\begin{document}

\lipsum[1]
\illustration{image-a}{The letter~``A''}
\lipsum[2]
\illustration{image-b}{The letter~``B''}
\lipsum[2]
\illustration{image-c}{The letter~``C''}
\lipsum[4]

\end{document}

答案2

对于小页面之前的空间,您不需要更改minipage定义。借助etoolbox\BeforeBeginEnvironment,您可以添加所需的空间:

\documentclass[12pt,a4paper]{article}
\usepackage[demo]{graphicx}
\usepackage{caption}

\setlength{\parindent}{0in}
\usepackage{etoolbox}                               % <---
\BeforeBeginEnvironment{minipage}{\par\vspace{5mm}} % <---

\usepackage{lipsum}

\begin{document}
\lipsum[11]

\begin{minipage}{\linewidth}
    \includegraphics[width=\linewidth]{database}
    \captionof{figure}{Desktop icon of simulator app}
\end{minipage}

\end{document}

在此处输入图片描述

答案3

您可以通过以下三行重新定义minipage环境以包含您需要的内容:vspace

\let\oldminipage=\minipage
\let\endoldminipage=\endminipage
\renewenvironment{minipage}{\vspace{5mm}\begin{oldminipage}}{\end{oldminipage}}

由于您没有提供示例,因此我提供了一个我自己的示例。以下是原始输出minipage和重新定义的输出,以供比较。如果您暂时需要恢复原始行为,只需使用\begin{oldminipage} .. \end{oldminipage}

\documentclass[12pt,a4paper]{article}
\usepackage[demo]{graphicx}
\usepackage{capt-of}
\setlength{\parindent}{0in}
\begin{document}

Some text here ...

\begin{minipage}{\linewidth}
    \centering
    \includegraphics[width=1\textwidth]{database}
    \captionof{figure}{Desktop icon of simulator app}
\end{minipage}

\let\oldminipage=\minipage
\let\endoldminipage=\endminipage
\renewenvironment{minipage}{\vspace{5mm}\begin{oldminipage}}{\end{oldminipage}}

\bigskip
Some text here ...

\begin{minipage}{\linewidth}
    \centering
    \includegraphics[width=1\textwidth]{database}
    \captionof{figure}{Desktop icon of simulator app}
\end{minipage}

\end{document}

在此处输入图片描述

相关内容