以固定间距堆叠单词

以固定间距堆叠单词

我创建了几个小宏,使我能够将单词堆叠在一起。这很粗糙,但效果很好。但是单词之间的间距因单词而异。我希望能够控制两行之间的间隙,以便它们都相同。

我的宏是

\def\lksStack#1#2#3{\ensuremath{\mathop{\empty}_{\text{#3#2}}^{\text{#3 #1}}} } 
   \def\rsmlStack#1#2{\lksStack{#1}{#2}{\rm \small}}

本文

there is in a $\rsmlStack{{\sf con}}{{\sf pro}}$ game, 
an $\rsmlStack{upper}{lower}$
but no $\rsmlStack{lower}{upper}$ bound on the right-hand side of

产生这种丑陋的不均匀输出

在此处输入图片描述

有人能建议一种获得一致间距的方法吗?谢谢

答案1

您可以使用包增加默认行距setspace,这样不包含堆叠的行与包含堆叠单词的行的间距相同。此外,我还展示了如何使用包stackengine来实现堆叠。为了确保堆叠内的间距一致(无论字母降部等如何),必须使用所谓的长堆叠来调节堆叠的基线跳跃,而不是调节单词之间的垂直间隙。

\documentclass{article}
\usepackage{stackengine,setspace}
\usepackage[nopar]{lipsum}
\parskip 1em
\spacing{1.5}
\def\stackalignment{l}
\renewcommand\stacktype{L}
\setstackgap{L}{10pt}
\begin{document}
\def\mytext{If you walk \stackanchor{left}{right}, you will see a
\stackanchor{house}{boat} with \stackanchor{an old man}{a cat}.}

\lipsum[1]\mytext\lipsum[2]\mytext\lipsum[3]
\end{document}

在此处输入图片描述

附录

可以通过制作宏来缩小行距,此处\mystack,将文本设置为较小的尺寸,并使用更紧密的基线跳跃:

\documentclass{article}
\usepackage{stackengine,setspace}
\usepackage[nopar]{lipsum}
\parskip 1em
\spacing{1.3}
\def\stackalignment{l}
\renewcommand\stacktype{L}
\setstackgap{L}{7pt}
\newcommand\mystack[2]{\stackanchor{\footnotesize#1}{\footnotesize#2}}
\begin{document}
\def\mytext{If you walk \mystack{left}{right}, you will see a
\mystack{house}{boat} with \mystack{an old man}{a cat}.}

\lipsum[1]\mytext\lipsum[2]\mytext\lipsum[3]
\end{document}

在此处输入图片描述

答案2

您可以\mathstrut向两个参数添加指令\rsmlStack

\def\rsmlStack#1#2{\lksStack{#1\mathstrut}{#2\mathstrut}{\rmfamily\small}}

请注意,\rm\sf在 LaTeX2e 下被视为已弃用;事实上,它们在几个重要的文档类中根本不起作用。请改用\rmfamily\sffamily。在下面显示的代码中,我还建议使用\footnotesize而不是\small堆叠材料。要更小,请使用\scriptsize

在此处输入图片描述

完整的 MWE:

\documentclass{article}
\usepackage{amsmath} % for '\text' and '\ensuremath' macros
\def\lksStack#1#2#3{\ensuremath{{}_{\text{#3#2}}^{\text{#3#1}}} } 
\def\rsmlStack#1#2{\lksStack{#1\mathstrut}{#2\mathstrut}{\rmfamily\footnotesize}}
\begin{document}
\noindent
there is in a 
$\rsmlStack{\textsf{con}}{\textsf{pro}}$ game, 
an $\rsmlStack{upper}{lower}$
but no $\rsmlStack{lower}{upper}$ bound on the right-hand side of
\end{document}

相关内容