一叠迷你盒与最后一叠迷你盒之间的间距

一叠迷你盒与最后一叠迷你盒之间的间距

目前面临两个小问题。

首先,我创建了一个自定义命令,让我可以在左侧放置图像,在右侧放置文本。我将其命名为 \imtxtopt。除了一个小问题外,它运行良好。

迷你盒子之间不存在差距。

原始代码(代码 1)

我将两个迷你盒子嵌套在另一个迷你盒子中,但这也无济于事。然后我添加了 \vspace,这有助于解决我的问题:

在一个迷你框和 vspace 中使用嵌套迷你框进行编码

但是,现在的问题是每个 \imtxtopt 的末尾都有一些额外的空间(这是可以接受的),如果我堆叠多个 \imtxtopt 命令,我不希望最后一个 \imtxtopt 有这些空间。我知道我可以创建另一个没有 \vspace 的命令,但是是否有可能有一个 if/else 语句类型的解决方案?简而言之,我希望每个 \imtxtopt 之间以及下一个段落和前一个 \imtxtopt 之间的间距保持一致。我试图找出是否有办法在 LaTeX 中全局添加迷你框之间的分隔,但没有成功。

第二个问题是,如果我不使用 callouts 包,我会将图像大小计算作为文本的一部分(代码 3):

无标注包

这是为什么?我该如何避免?我在制作 MWE 时才发现这个问题,因为我的文档中默认已经包含标注,所以我没有注意到这是一个问题。

代码如下:

代码1:

% Default Template and Font Size
\documentclass{article}

 % Set Margins of the Document
\usepackage[a4paper,bindingoffset=0in,left=2.54cm,right=2.54cm,top=3.8cm,bottom=2.5cm,footskip=.25in]{geometry}

% Special container for image on left and text on right with options
\newcommand\imtxtopt[4]{
\begin{minipage}{#1}
    \centering
    \includegraphics[#2]{#3}
\end{minipage}\quad
\begin{minipage}{\textwidth-#1-1em}
#4
\end{minipage}
}

\usepackage{lipsum}

% Annotations
\usepackage{callouts}

\usepackage{graphicx}

\begin{document}

\section{Test 1}

\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}

\lipsum[1]

\end{document}

代码2:

% Default Template and Font Size
\documentclass{article}

 % Set Margins of the Document
\usepackage[a4paper,bindingoffset=0in,left=2.54cm,right=2.54cm,top=3.8cm,bottom=2.5cm,footskip=.25in]{geometry}

% Special container for image on left and text on right with options
\newcommand\imtxtopt[4]{
\begin{minipage}[H]{\textwidth}
\begin{minipage}{#1}
    \centering
    \includegraphics[#2]{#3}
\end{minipage}\quad
\begin{minipage}{\textwidth-#1-1em}
#4
\end{minipage}
\vspace{6pt}
\end{minipage}
}

\usepackage{lipsum}

% Annotations
\usepackage{callouts}

\usepackage{graphicx}

\begin{document}

\section{Test 1}

\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}

\lipsum[1]

\end{document}

代码3:

% Default Template and Font Size
\documentclass{article}

 % Set Margins of the Document
\usepackage[a4paper,bindingoffset=0in,left=2.54cm,right=2.54cm,top=3.8cm,bottom=2.5cm,footskip=.25in]{geometry}

% Special container for image on left and text on right with options
\newcommand\imtxtopt[4]{
\begin{minipage}{#1}
    \centering
    \includegraphics[#2]{#3}
\end{minipage}\quad
\begin{minipage}{\textwidth-#1-1em}
#4
\end{minipage}
}

\usepackage{lipsum}

% Annotations
%\usepackage{callouts}

\usepackage{graphicx}

\begin{document}

\section{Test 1}

\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}

\lipsum[1]

\end{document}

答案1

如果您不使用 callouts 包,您会将图像大小计算结果作为文本的一部分,原因是图像大小计算结果未包装到 中\dimexpr...\relax


您的小页面的内容是垂直居中的。这意味着:由您的小页面形成的框的基线垂直位于这些框的中间。因此这些框具有很大的深度,这会影响 LaTeX 垂直放置这些框的方式。

我建议不要使用小页面,而是使用自己的盒子测量方法来对齐图像,同时将文本放在普通的\vboxes 中,其深度将是它们所包含的最后一行文本的深度。

% Default Template and Font Size
\documentclass{article}

\newbox\mytempboxa
\newbox\mytempboxb

 % Set Margins of the Document
\usepackage[a4paper,bindingoffset=0in,left=2.54cm,right=2.54cm,top=3.8cm,bottom=2.5cm,footskip=.25in]{geometry}

\makeatletter
% Special container for image on left and text on right with options
\newcommand\imtxtopt[4]{%
  \setbox\mytempboxa=\vbox{%
    \hsize=#1\relax
    \centering
    \includegraphics[#2]{#3}%
  }%
  \setbox\mytempboxb=\vbox{%
    \hsize=\dimexpr\textwidth-\wd\mytempboxa-1em\relax
    \noindent#4%
  }%
  \ifdim\ht\mytempboxa<\ht\mytempboxb\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
  {%
    \setbox\mytempboxa=\vbox to \ht\mytempboxb{%
      \hsize=#1\relax
      \centering
      \vfill
      \includegraphics[#2]{#3}%
      \vfill
    }%
  }{%
    \setbox\mytempboxb=\vbox to \ht\mytempboxa{%
      \hsize=\dimexpr\textwidth-\wd\mytempboxa-1em\relax
      \vfill#4\vfill
    }%
  }%
  \par\hbox to\textwidth{%
    \box\mytempboxa\hfill\box\mytempboxb\strut
  }%
}%
\makeatother

\usepackage{lipsum}
\usepackage{graphicx}

\begin{document}

\section{Test 1}

\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
% Do whatever \vskip you want.
%\smallskip 
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}
% Do whatever \vskip you want.
%\smallskip 
\imtxtopt{2cm}{width=2cm}{example-image}{\lipsum[1]}

\lipsum[1]

\end{document}

在此处输入图片描述

相关内容