使用 \if 语句检查图形位置

使用 \if 语句检查图形位置

我想添加一个

\noindent

在新段落之前,但只有当浮动图形直接放置在其上方时才可以。

我如何使用 \if 语句检查这一点?因此,查看下面的示例,如果将图放在两个段落之间,我不知道下一段是否需要缩进。

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.

\begin{figure}[!htbp]
\begin{center}
\includegraphics[width=\textwidth]{resources/images/illustration.png}
\caption{illu}
\label{fig:my_illu}
\end{center}
\end{figure}


\noindent
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat.

答案1

大多数浮动元素会拆分段落。这假设您只想在浮动\noindent元素后显示第一个段落[h]。请注意,当[h]是其中一个选项时,所有其他选项都将显示在后面的页面上。

这需要运行两次才能成功。这与 egreg 的解决方案不同,因为上一段是正常结束的。

这个特殊示例提出了一个问题:\noindent如果下一个段落位于下一页的顶部,您是否想要它?如果不是,则应使用ifoddpage 包中的\page@oddpage和,而不是。\checkoddpage\value{page}

\documentclass[letter]{article}
\usepackage{graphicx}
\usepackage{refcount}% or hyperref
\usepackage{lipsum}% MWE only

\begin{document}
\rule{1em}{9\baselineskip}% <9 on first page, >9 on second page.

\lipsum[1]

\begin{figure}[!htbp]% [!] doesn't do what you probably think it does
\begin{center}% \centering preferred, but I guess you want the extra space
\includegraphics{example-image}
\caption{illu}
\label{fig:my_illu}
\end{center}
\end{figure}

\ifnum\value{page}=\getpagerefnumber{fig:my_illu}\relax \noindent\fi
\lipsum[2-10]

\end{document}

相关内容