在文档的某个部分中有一张图片,例如:
\subsubsection{Title}
\begin{figure}
\centering
\includegraphics[width=0.7\textwidth]{somefile.pdf}
\end{figure}
如何设置它以使图像在页面限制内尽可能大,但又不会太大以至于将图像放在与标题不同的页面上?
答案1
下面通过使用一些计算来设置键值,\stretchtofitimage
从而垂直拉伸图像以适合“页面的其余部分” :height
\documentclass{article}
\usepackage{geometry,graphicx,zref-savepos}% http://ctan.org/pkg/{geometry,graphicx,zref}
\makeatletter
% \zsaveposx is defined since 2011/12/05 v2.23 of zref-savepos
\@ifundefined{zsaveposy}{\let\zsaveposy\zsavepos}{}
\newcounter{stretchtofit}
\newcommand{\stretchtofitimage}[2][]{%
\stepcounter{stretchtofit}% Next image
\zsaveposy{fig:top\thestretchtofit}% Save vertical position on page
\includegraphics[height=\dimexpr\zposy{fig:top\thestretchtofit}sp-\Gm@bmargin-1pt,#1]{#2}}
\begin{document}
\section{A section}
\subsection{A subsection}
Here is some text.
\subsubsection{A subsubsection}
{\centering\stretchtofitimage[width=.6\linewidth]{example-image-a}\par}
Here is some more text.
\end{document}
高度的计算使用zref
的savepos
模块用于存储页面底部的垂直高度(以点为s
单位)。由于此垂直高度是从下往上测量的,因此我们减去底部边距(由提供的)以及一点点。部分下方允许有一些拉伸,此移除可适应此情况。p
geometry
\Gm@bmargin
1pt
1pt
请注意,以上内容假设您没有使用\caption
- 它没有包含在您的代码片段中,因此这可能是一个合理的假设。
上图包括一个showframe
,这也得到了geometry
。
如果您想要一个带\subsubsection
标题的单页图像,那么您可以不用zref
:
\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\begin{document}
\section{A section}
\subsection{A subsection}
Here is some text.
\subsubsection{A subsubsection\strut}
{\centering
\includegraphics[width=\textwidth,height=\dimexpr\textheight-1.7ex-\baselineskip-1pt]{example-image-a}\par}
Here is some more text.
\end{document}
计算的测量值height
基于以下事实:使用标准文档类(具有常规)\subsubsection
设置标题,并使用跳过后缀标题。同样,差异是为了更好的衡量。\normalfont\normalsize\bfseries
\baselineskip
1.5ex \@plus .2ex
1pt
内部确保标题的正确使用。在实际标题中\strut
,您可能不需要它。\subsubsection
\baselineskip
答案2
这是一种稍微“黑客”的方式,但生成 LaTeX 的程序只需被告知预期的页面大小,并根据纵横比指定 20 厘米高或 15 厘米宽。