如果没有足够的空间放置它,则自动换行到图中

如果没有足够的空间放置它,则自动换行到图中

在很多情况下,我更喜欢在文本后面直接放一张图片,不加标题……就像这样: 在此处输入图片描述

但是,当没有空间放置图片(页面末尾...)时,我更喜欢创建一个图形环境:

在此处输入图片描述

现在,我需要根据具体情况手动更改代码,但这确实很漫长且繁琐(即使文档没有太大变化),并且它无法扩展到大型或变化的文档(任何更改之后我都需要重新检查所有内容...)我是否可以自动化这个过程?

\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{lipsum}
\newtheorem{definition}{Definition}
\usepackage{verbatim}

\begin{document}

\section{If there is enough space}

\begin{definition}
  As you can see in this picture, A is a nice letter:
  \begin{center}
    \includegraphics[width=5cm]{example-image-a}
  \end{center}
\end{definition}

\lipsum[1-2]

\section{If there is NOT enough space}

\begin{definition}\label{def:2}
  As you can see in \cref{fig:fig2}, A is a nice letter.
  \begin{figure}[htbp]
  \centering
  \includegraphics[width=5cm]{example-image-a}
  \caption{Figure for \cref{def:2}}
  \label{fig:fig2}
\end{figure}
\end{definition}

\lipsum[1]

\section{Example of syntax}

I'd like to use a syntax like:
\begin{verbatim}
As you can see \figureIfSpace%
{in this picture, A is a nice letter:}% <- Text if space
{in \cref{fig:fig2}, A is a nice letter.}% <- Text if not enough space
{\includegraphics[width=5cm]{example-image-a}}% <- Image...
[\caption{Figure for \cref{def:2}} \label{fig:fig2}]% <- Caption/labels
\end{verbatim}
\end{document}

编辑

我尝试通过\pagetotal检查剩余空间来解决此问题,但获得的尺寸似乎太大:如果我绘制该尺寸的规则,它将被推送到下一页:

\documentclass{article}
\usepackage{lipsum}
\usepackage{showframe}
\begin{document}
\lipsum[1-3]

\newdimen\spaceleft
\spaceleft=\dimexpr\textheight-\pagetotal-1mm\relax%
\rule{1mm}{\spaceleft}%
%Remaining space (above this line):
%\the\spaceleft
\end{document}

答案1

不是一个真正的答案,更多的是一个建议。看一下needspace包的代码,它会检查页面上是否还剩下一定量的空间。如果没有,那么它会开始一个新页面。您可能能够做一些类似的事情来检查可用空间,然后对(无)标题插图做自己的事情。我想您可以始终只包含图形并使用包\captionof中的图形,或者不使用caption

相关内容