我想在一个水平页面上的两行上添加四张长宽比略有不同的图片,以便每张图片与页面外边距之间的距离相等或至少非常接近大小。
我怎样才能让 LaTeX 进行计算?
这是我的 MWE:
\documentclass{article}
\usepackage[margin=0cm, top=0cm, bottom=0cm, outer=0cm, inner=0cm, landscape, a4paper]{geometry}
\pagestyle{empty}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\captionsetup[subfigure]{labelformat=empty}
\captionsetup{labelformat=empty}
\centering
\begin{subfigure}[t]{0.5\textheight}
\centering
\includegraphics[height=6cm]{example-image-a}
\caption[]%
{{\small}}
\label{}
\end{subfigure}
\quad % \hfill
\begin{subfigure}[t]{0.5\textheight}
\centering
\includegraphics[height=6cm]{example-image-b}
\caption[]%
{{\small}}
\label{}
\end{subfigure}
\vskip\baselineskip
\begin{subfigure}[t]{0.475\textwidth}
\centering
\includegraphics[height=7cm]{example-image-c} % a pdf
\caption[]%
{{\small}}
\label{}
\end{subfigure}
\quad
\begin{subfigure}[t]{0.475\textwidth}
\centering
\includegraphics[height=7cm]
{example-image} % a pdf
\caption[]%
{{\small }}
\label{}
\end{subfigure}
\caption[]
{\small}
\label{}
\end{figure}
\end{document}
答案1
subfig
这可以通过使用package 而不是package来实现。这样,您可以使用和subcaption
的组合来定义与边框的相等间距\hfill
。下面给出了 MWE:\null
\hspace{...}
\documentclass{article}
\usepackage[margin=0cm, top=0cm, bottom=0cm, outer=0cm, inner=0cm, landscape, a4paper]{geometry}
\pagestyle{empty}
\usepackage{graphicx}
%\usepackage{subcaption} %I take this out
\usepackage{subfig}
\begin{document}
\begin{figure}
\captionsetup[subfigure]{labelformat=empty}
\captionsetup{labelformat=empty}
\centering\hfill
\subfloat[][]{\includegraphics[height=6cm,keepaspectratio]{example-image-a}\label{figure1}}\hspace{2cm}
\subfloat[][]{\includegraphics[height=7cm,keepaspectratio]{example-image-b}\label{figure2}}\hfill\null\\
\hfill
\subfloat[][]{\includegraphics[height=7cm,keepaspectratio]{example-image-c}\label{figure3}}\hspace{2cm}
\subfloat[][]{\includegraphics[height=6cm,keepaspectratio]{example-image}\label{figure4}}\hfill\null
\end{figure}
\end{document}
在此我覆盖并确保所有图形都从\hfill
开头使用相同的位置开始。同样,同样的技术也适用于结尾。此外,图像间间距由处理以\hspace{...}
获得相等的间距。请注意,我添加了一个\null
字符来影响间距,即两行中每个图形的结尾相对于边框本身。这将为您提供:
附言:请注意,有更多优雅的方法来实现这一点Tikz
,例如使用。但这是我能想到的最简单的方法;)
笔记:对于奇异的纵横比/图形尺寸,您可以使用\hspace{...}
作为调整旋钮来设置正确。
答案2
该解决方案使用保存框 0-3 来测量宽度并\dimen0
计算第一行左边距和右边距的宽度。
请注意,标准 LaTeX 不使用框和长度寄存器 0-9。仍然应该只在组(在本例中为图形)内使用它们,以保留其内容。
\documentclass{article}
\usepackage[margin=0cm, top=0cm, bottom=0cm, outer=0cm, inner=0cm, landscape, a4paper]{geometry}
\pagestyle{empty}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\captionsetup[subfigure]{labelformat=empty}
\captionsetup{labelformat=empty}
\sbox0{\includegraphics[height=6cm]{example-image-a}}% measure widths
\sbox1{\includegraphics[height=6cm]{example-image-b}}%
\sbox2{\includegraphics[height=7cm]{example-image-c}}% a pdf
\sbox3{\includegraphics[height=7cm]{example-image}}% a pdf
\centering
\begin{subfigure}[t]{\wd0}
\centering
\usebox0
\caption[]%
{{\small}}
\label{}
\end{subfigure}% the extra space will mess up calculations
\hfil
\begin{subfigure}[t]{\wd1}
\centering
\usebox1
\caption[]%
{{\small}}
\label{}
\end{subfigure}%
\par\vskip\baselineskip
\dimen0=\dimexpr \linewidth-\wd0-\wd1\relax% compute size of \hfil in previous line
\divide\dimen0 by 3
\hspace*{\dimen0}% left margin
%\makebox[\dimexpr \linewidth-2\dimen0][c]{% or center a box the same width
\begin{subfigure}[t]{\wd2}
\centering
\usebox2
\caption[]%
{{\small}}
\label{}
\end{subfigure}%
\hfill% overpowers \centering
\begin{subfigure}[t]{\wd3}
\centering
\usebox3
\caption[]%
{{\small }}
\label{}
\end{subfigure}\hspace*{\dimen0}% right margin
\caption[]
{\small}
\label{}
\end{figure}
\end{document}