有人知道如何放置图像来填充段落之间的空白吗?
我的情况是,我有两个minipages
必须放在同一页上,但它们不会占用所有空间。现在我使用vfill
如下方法将它们分开。
\clearpage
\begin{minipage}{\linewidth}
about 3 inches worth of text
\end{minipage}
\vfill
\begin{minipage}{\linewidth}
about 3 inches worth of text
\end{minipage}
\clearpage
我有以下代码片段,用于用点填充水平线,我尝试修改它以垂直工作但无济于事。
\def\mydots{\leavevmode\xleaders\hbox to 0.25em{\hfil.\hfil}\hfill\kern0pt}
任何帮助都将非常有帮助。
答案1
\vfill
您可以使用保存顶部/底部的位置zref
的savepos
模块,然后拉伸图像以填充该空间:
\documentclass{article}
\usepackage{zref-savepos,graphicx}
\usepackage[nopar]{lipsum}% Just for this example
\usepackage[margin=1in]{geometry}% Just for this example
\begin{document}
\noindent
\begin{minipage}{\linewidth}
\strut\lipsum[1]\strut
\end{minipage}
\zsavepos{top}% Save top of \vfill
\vfill
\noindent\zsavepos{bottom}%
\raisebox{.5\baselineskip}[0pt][0pt]
{\includegraphics[width=\linewidth,height=\dimexpr\zposy{top}sp-\zposy{bottom}sp+.5\baselineskip]{example-image}}
\noindent
\begin{minipage}{\linewidth}
\strut\lipsum[2]\strut
\end{minipage}
\clearpage
\lipsum
\end{document}
由于这看起来像是一次性使用事件,因此代码按原样包含在文档中。但是,如果您希望更频繁地执行此操作,可以将内容包装在(例如)\vfillimage[..]{...}
宏中。
上述技术使用 LaTeX 的\label
-\ref
系统来跟踪页面上的位置。因此,任何布局更改都需要额外的编译来解决任何引用。第一次处理也是如此(至少需要两次编译)。
这是将上述技术封装成宏的方法。在放置图形之前,可以使用\vfillgraphic*[<opts>]{<image>}
选项*
插入一个可选的。\noindent
<image>
<opts>
\documentclass{article}
\usepackage{zref-savepos,graphicx}
\usepackage[nopar]{lipsum}% Just for this example
\usepackage[margin=1in]{geometry}% Just for this example
\usepackage{xparse}
\newcounter{vfgcntr}
\NewDocumentCommand{\vfillgraphic}{s O{} m}{%
\stepcounter{vfgcntr}% Make unique labels
\zsavepos{vfg-top-\thevfgcntr}% Save top of \vfill
\vfill
\IfBooleanT{#1}{\noindent}% \vfillgraphic*
\zsavepos{vfg-bottom-\thevfgcntr}% Save bottom of \vfill
\raisebox{-.5\baselineskip}[0pt][0pt]
{\includegraphics[height=\dimexpr\zposy{vfg-top-\thevfgcntr}sp-\zposy{vfg-bottom-\thevfgcntr}sp+.5\baselineskip,#2]{#3}}
}
\begin{document}
\noindent
\begin{minipage}{\linewidth}
\strut\lipsum[1]\strut
\end{minipage}
\vfillgraphic*[width=\linewidth]{example-image}
\noindent
\begin{minipage}{\linewidth}
\strut\lipsum[2]\strut
\end{minipage}
\clearpage
\lipsum
\end{document}
对于 的多次使用\vfillgraphic
,您需要避免多次定义\label
。因此,vfgcntr
每个标签都会添加一个唯一的计数器。