拉伸小页面以对齐顶部和底部

拉伸小页面以对齐顶部和底部

我有两个并排的小页面。左边的页面包含一张图片,右边的页面包含一些文本。文本被顶部和底部的规则“包围”。文本依次与顶部对齐(顶部规则下方)。在文本下方,我想插入垂直空白,以便底部规则与旁边的图像底部对齐。

下面是一个 MWE,将底部规则放在文本正下方:

\documentclass{article}
\usepackage{adjustbox}
\usepackage{graphicx}
\begin{document}
\adjustbox{valign=t}{\begin{minipage}{0.4\textwidth}
    \includegraphics[width=\textwidth]{image.jpeg}
\end{minipage}}
\adjustbox{valign=t}{\begin{minipage}{0.6\textwidth}
    \rule{\textwidth}{0.6mm}\\[0.2cm]
    Text
    \vspace*{\fill}
    \rule{\textwidth}{0.6mm}
\end{minipage}}
\end{document}

我该如何达到想要的效果?谢谢你的帮助

答案1

如果您考虑使用其他软件包,我可以提供一个tcolorbox解决方案。如果图像高于文本,则规则与图像匹配。否则,规则遵循文本:

在此处输入图片描述

源代码是:

\documentclass{article}
\usepackage{adjustbox}
\usepackage{graphicx}
\usepackage{lipsum}

\usepackage[skins]{tcolorbox}

\newcommand{\ImageAndText}[2]{%
\begin{tcolorbox}[blankest,sidebyside,
    sidebyside align=top seam,
    sidebyside gap=2mm,
    lefthand width=0.4\textwidth,
    before lower=\par\vspace*{2mm},
    after lower=\par\vspace*{2mm},
    underlay={
      \draw[line width=0.6mm] ([yshift=-0.3mm]segmentation.north east)--(interior.north east);
      \draw[line width=0.6mm] ([yshift=0.3mm]segmentation.south east)--(interior.south east);
    },
    ]
  \includegraphics[width=\linewidth]{#1}
  \tcblower
  #2
\end{tcolorbox}%
}


\begin{document}

\lipsum[1]

\ImageAndText{example-image}{Text}

\ImageAndText{example-image}{\lipsum[2]}

\end{document}

答案2

我们可以用测量文本的高度来environ判断它是否高于图形。

\documentclass{article}
\usepackage{graphicx}
\usepackage{environ}
\usepackage{lipsum}

\NewEnviron{graphicsandtext}[2][]{%
  % #1 (optional)  = the options for \includegraphics
  % #2 (mandatory) = the image file
  \par\noindent
  \sbox{0}{\includegraphics[#1]{#2}}%
  \raisebox{-\height}{\usebox{0}}%
  \sbox{2}{%
    \begin{minipage}[t]{\dimexpr\columnwidth-\wd0-\columnsep}
    \hrule depth 0.6mm
    \vspace{2pt}
    \BODY
    \par\vspace{2pt}
    \hrule height 0.6mm
    \end{minipage}%
  }%
  \hfill
  \ifdim\dp2<\ht0
    \begin{minipage}[t][\ht0][s]{\dimexpr\columnwidth-\wd0-\columnsep}
    \hrule depth 0.6mm
    \vspace{2pt}
    \BODY
    \par
    \vfill
    \vspace{2pt}
    \hrule height 0.6mm
    \end{minipage}
  \else
    \usebox{2}
  \fi
  \par
}

\begin{document}

\lipsum[1]

\begin{graphicsandtext}[width=0.4\textwidth]{example-image}
Some short text
\end{graphicsandtext}

\bigskip

\begin{graphicsandtext}[width=0.4\textwidth]{example-image}
\lipsum[3]
\end{graphicsandtext}

\end{document}

在此处输入图片描述

如果第二个实例有,则效果如下0.3\textwidth

在此处输入图片描述

答案3

这取决于您的使用情况,有针对此类任务的软件包(请参阅其他答案)。但如果您想使用 LaTeX 板载工具实现此目的,则可以使用height以下可选参数minipage

\documentclass{article}

\usepackage{graphicx}

\begin{document}

\begin{figure}[tbp]
  \centering
  \includegraphics[height=4cm,keepaspectratio]{example-image-a}%
  \quad
  \begin{minipage}[b][4cm][t]{4cm}
    \rule{\linewidth}{0.6mm}\\[0.2cm]
    Text\par
    \vspace{\fill}
    \rule{\linewidth}{0.6mm}
  \end{minipage}
  \caption{Your Caption}
\end{figure}

\end{document}

在此处输入图片描述

相关内容