水平页面上的图片以 2x2 网格排列,图片与页边距相等

水平页面上的图片以 2x2 网格排列,图片与页边距相等

我想在一个水平页面上的两行上添加四张长宽比略有不同的图片,以便每张图片与页面外边距之间的距离相等或至少非常接近大小。

我怎样才能让 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}

完整页面

相关内容