仅在 H 型浮点数之前/之后添加代码

仅在 H 型浮点数之前/之后添加代码

我想[H]用一些垂直空间来修补我的浮动,因为它看起来与[h]其他类型的浮动不一致。我正在使用KOMAscript

是否有一个好的方法,仅当传递了参数时,才能将代码放在环境之前/之后[H]?我可以通过手动放置来实现效果\vspace{},但显然我宁愿每次都不这样做。

我还想避免创建新环境;我觉得拥有本机浮点声明将使我的 .tex 文件可用/可与其他格式一起传输。

或者,如果您知道使间距一致的好方法,那也会有所帮助。

编辑:添加 MWE

\documentclass[parskip=full,captions=tableheading]{scrartcl}

\usepackage{mwe}

\usepackage{float}

\usepackage[tableposition=top,labelfont=bf,skip=0pt]{caption}
\setlength\belowcaptionskip{0pt}
\setlength\abovecaptionskip{0pt}

\setlength{\intextsep}{\baselineskip}


\newcommand{\blah}{Here are some random words. Blah, blah blah blah blah blah blah blah.}


\begin{document}

    \blah

    \begin{figure}[h]
        \centering
        \noindent\includegraphics[height=5cm]{example-image-b} 
        \caption{h type figure, see the space below}
    \end{figure}

    \blah

    \begin{figure}[H]
        \centering
        \noindent\includegraphics[height=5cm]{example-image-b} 
        \caption{H type figure, see the extra space below}
    \end{figure}

    \blah

\end{document}


答案1

您可以尝试修补结束命令以添加负数 \parskip:

\documentclass[parskip=full,captions=tableheading]{scrartcl}

\usepackage{mwe}

\usepackage{float}
\usepackage{etoolbox}
\makeatletter
\patchcmd\float@endH{\relax}{\vskip-\parskip\relax}{}{\fail}
\makeatother

\usepackage[tableposition=top,labelfont=bf,skip=0pt]{caption}
\setlength\belowcaptionskip{0pt}
\setlength\abovecaptionskip{0pt}

\setlength{\intextsep}{\baselineskip}


\newcommand{\blah}{Here are some random words. Blah, blah blah blah blah blah blah blah.}


\begin{document}

    \blah

    \begin{figure}[h]
        \centering
        \noindent\includegraphics[height=5cm]{example-image-b}
        \caption{h type figure, see the space below}
    \end{figure}

    \blah

    \begin{figure}[H]
        \centering
        \noindent\includegraphics[height=5cm]{example-image-b}
        \caption{H type figure, see the extra space below}
    \end{figure}

    \blah

\end{document}

相关内容