指定所有图形周围的最小垂直边距

指定所有图形周围的最小垂直边距

我想指定文档中所有图形周围最小垂直边距等于三行单倍行距的高度。“最小”是指如果图形周围已经有这个空间,那么边距就不应该再增加了。我该怎么做?

平均能量损失

请注意,要使用此功能,您需要下载我的图像(或者替换成您自己的)。

\documentclass[11pt]{report}
\usepackage{amsmath}
\usepackage{graphicx}
\begin{document}

is reminiscent of a banana. Because there are separate hippocampi in the
left and right hemispheres, there are also two dentate gyri.

\begin{figure}[htbp]
\centering
\includegraphics{hippocampus_frontal.pdf}
\caption{Hippocampal Formation (Allen Brain Explorer)}
\label{fig:HippocampusFrontal}
\end{figure}

The DG has traditionally been split into three layers visible in

\end{document}

垂直边距

在此处输入图片描述

答案1

正如 ADP 正确指出的那样,\intextsep长度决定了标准浮点数顶部和底部之间的间距,因此全局更改它会同时更改表格和图形的间距,这可能不是您想要的。但是,您不需要创建自定义环境来为每个表格设置不同的间距;相反,您可以figure直接挂接到环境中。这样做的好处是,如果您将相同的代码用于另一个需求,则除了值之外,您无需调整任何其他内容。这是一个例子。我使用相同的“图像”来代替环境{table}通常包含的表格内容,因为它可以更容易地看到间距差异。

\documentclass{article}
\usepackage{kantlipsum}
\usepackage[demo]{graphicx}
\usepackage{etoolbox}
\AtBeginEnvironment{figure}{\setlength{\intextsep}{3\baselineskip}}
\begin{document}
\kant[1]
\begin{figure}[h]
\includegraphics[width=\linewidth]{foo}
\caption{A Figure with a wide spacing}
\end{figure}
\kant[3-4]
\begin{table}[h]
\includegraphics[width=\linewidth]{foo}
\caption{A Table with the regular spacing}
\end{table}
\kant[4]
\end{document}

图部分 表格部分

答案2

您所指的长度是\intextsep,因此,如果您想将其(全局)设置为非默认值,可以通过以下方式实现:

\setlength{\intextsep}{XYZ}

您选择的维度是多少XYZ?假设您想要三条单行线,则可以通过以下方式实现:

\setlength{\intextsep}{3\baselineskip}

我相信这\intextsep会影响文档中的一些其他布局安排,所以也许您不想全局更改它,在这种情况下,您可以创建一个新的环境,在离开环境时恢复之前暂时更改为您想要的值:

%DEFINE YOUR CUSTOM LENGTH
\newlength{\myintextsep}\setlength{\myintextsep}{3\baselineskip}
%CUSTOM ENVIRONMENT
\makeatletter
    \newenvironment{myfigure}[1][]{ %
        \let\intextsep@old\intextsep %
        \setlength{\intextsep}{\myintextsep} %
        \figure[#1] %
    }{ %
        \endfigure\setlength{\intextsep}{\intextsep@old} %
    }
\makeatother 

通过比较,可以看出以下差异:

例子

完整工作代码如下:

\documentclass{article}
\usepackage{lipsum}
\usepackage[demo]{graphicx}
\usepackage{etoolbox}

%DEFINE YOUR CUSTOM LENGTH
\newlength{\myintextsep}\setlength{\myintextsep}{3\baselineskip}
%CUSTOM ENVIRONMENT
\makeatletter
    \newenvironment{myfigure}[1][]{ %
        \let\intextsep@old\intextsep %
        \setlength{\intextsep}{\myintextsep} %
        \figure[#1] %
    }{ %
        \endfigure\setlength{\intextsep}{\intextsep@old} %
    }
\makeatother

\begin{document}
        \def\t{The cat sat on the mat }

        \t\t\t\t

        \begin{figure}[h]
            \centering\includegraphics[width=4in,height=1cm]{demo.png}
        \end{figure}

        \t\t\t\t\t

        \begin{myfigure}[h]
            \centering\includegraphics[width=4in,height=1cm]{demo.png}
        \end{myfigure}

        \t\t\t\t\t
\end{document}

相关内容