![如果没有足够的空间放置它,则自动换行到图中](https://linux22.com/image/440083/%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%E8%B6%B3%E5%A4%9F%E7%9A%84%E7%A9%BA%E9%97%B4%E6%94%BE%E7%BD%AE%E5%AE%83%EF%BC%8C%E5%88%99%E8%87%AA%E5%8A%A8%E6%8D%A2%E8%A1%8C%E5%88%B0%E5%9B%BE%E4%B8%AD.png)
在很多情况下,我更喜欢在文本后面直接放一张图片,不加标题……就像这样:
但是,当没有空间放置图片(页面末尾...)时,我更喜欢创建一个图形环境:
现在,我需要根据具体情况手动更改代码,但这确实很漫长且繁琐(即使文档没有太大变化),并且它无法扩展到大型或变化的文档(任何更改之后我都需要重新检查所有内容...)我是否可以自动化这个过程?
\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
。