我希望文档中的图形尽可能大,但又不破坏宽高比和布局。这意味着内容(包括标题)仍应位于页脚上方。当然,我可以手动更改高度直到合适,但我想知道是否有更好的选择。
如果这对于一般情况不起作用,那么是否有一个可行的解决方案,假设标题不超过两行?
目前,我使用
keepaspectratio,width=\linewidth,height=\paperheight
作为图像的默认选项,但我想还有比这更好的东西吗\paperheight
?
在写这个问题的时候我发现\textheight
这样要好得多,但是由于标题的原因,仍然存在问题。
最小示例
代码
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amssymb,amsmath}
\usepackage[a4paper, left=1cm, right=1cm, top=2cm, bottom=2cm]{geometry}
\usepackage{lastpage}
\usepackage{graphicx}
\usepackage[pagestyles]{titlesec}
\usepackage{float}
% Header and footer
\newpagestyle{mystyle}{%
\sethead{Something}{is}{here}
\setfoot{This is left}{middle}{Page \thepage{} of \pageref*{LastPage}}}
\pagestyle{mystyle}
\begin{document}
% https://de.wikipedia.org/wiki/Datei:Burj_Khalifa.jpg
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio,width=\linewidth,height=\paperheight]{Burj_Khalifa.jpg}
\caption{A caption}
\end{figure}
\end{document}
渲染
答案1
实际上,您应该使用\textheight
,而不是 \paperheight
。如果图形有标题,则使用该长度的一小部分作为.8\textheight
或\dimexpr\textheight-5\baselineskip
(文本高度减去五行)作为 4 行标题,或者更准确地说,理论上是\dimexpr\textheight-\abovecaptionskip-4\baselineskip
,但在实践中使用\abovecaptionskip
可能会产生有点太大的浮点数。但是,您几乎不会注意到这一点(默认 10pt 字体大小时 <2pt,12pt 时 0.13pt,11pt 时没有...)。当然,始终假设正常行没有大字符或内联数学增加行高。
\documentclass[a4paper]{article}
\usepackage[showframe]{geometry} % to show document layout
\usepackage{graphicx,lipsum}
\begin{document}
\begin{figure}
\centering\includegraphics[
keepaspectratio,
width=\linewidth,
height=\dimexpr\textheight-7\baselineskip]%
{example-image-9x16}
\caption{\protect\lipsum*[2]}
\end{figure}
\end{document}
答案2
如果假设标题恰好有两行,则\textheight-34.02pt
大约是适合页面的最大高度。
如何得出该值:使用带有图像\textheight
并查看 .log 文件,将会有一个警告,指示 vbox 有多满(34.02pt
如果您的设置中有两行标题)。
\documentclass[a4paper]{article}
\usepackage[showframe]{geometry} % to show document layout
\usepackage{graphicx}
\begin{document}
\begin{figure}
\centering\includegraphics[keepaspectratio,
width=\linewidth,height=\dimexpr\textheight-34.02pt\relax]{example-image-9x16}
\caption{text text text text text text text text text text text text text text text text text text text text text text text text }
\end{figure}
\end{document}