如何将图像水平放置在逐字测试旁边,并使两者都通过顶部边框对齐?

如何将图像水平放置在逐字测试旁边,并使两者都通过顶部边框对齐?

我正在尝试将一张图片(用边框装饰)和一段逐字文本水平并排放置。它们必须通过顶部边框对齐,并且它们之间有一定的空间。我正在这样做:

\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\begin{document}
  \tikz \node[draw=gray] {\includegraphics[width=2in]{foo.pdf}};
  \hspace{1em}
  \begin{minipage}[t]{.5\linewidth}\VerbatimInput{foo.tex}\end{minipage}
\end{document}

但是,它们没有与顶部边框对齐。

答案1

您必须改变两个元素的基线。

如果图像默认位于底部,但tikz可以选择更改/移动其边界框或任何节点的基线,则为基线。在示例中,我将基线移动到唯一节点的顶部锚点。这就是我使用附加名称的原因A。更改图像的基线只是部分解决方案。

包含多行文本的顶部对齐minipage [t]设置为其第一行的基线。通常情况下是这样,但在这里您希望将基线设置在顶部边缘minipage,因此\vspace{0pt}设置为顶部的附加锚点。

顺便说一句,我无法用编译你的代码VerbatimInput{...},所以我对其进行了注释。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage[nopar]{kantlipsum}


\begin{document}
\tikz[baseline=(A.north)] \node (A) [draw=gray] {\includegraphics[width=2in]{example-image}};%
\hspace{1em}%
\begin{minipage}[t]{.45\linewidth}%VerbatimInput{}
  \vspace{0pt}\kant[1][1]
\end{minipage}
\end{document}

编辑。添加到的
示例(请参阅下面的完整代码)。yshiftbaseline

此外,如果您希望将群组置于中心,请添加附加代码

\begingroup
  \centering
  % tikz and the rest
  \par
\endgroup

否则,您可能需要在\noindent之前插入\tikz,以删除缩进,除非您的文档类定义没有缩进的段落。

完整代码:

\documentclass{acmart}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage[nopar]{kantlipsum}


\begin{document}

\begingroup     % <--- Those are required to centre the group
  \centering    % <---  
  \tikz[baseline={([yshift=-0.7\baselineskip]A.north)}]
    \node (A) [draw=gray]
    {\includegraphics[width=2in]{example-image}};%
  \hspace{1em}%
  \begin{minipage}[t]{.45\linewidth}
    \kant[1][1]
  \end{minipage}
  \par          % <---
\endgroup
\end{document}

相关内容