![宏中的文本垂直间距根据输入而变化](https://linux22.com/image/261108/%E5%AE%8F%E4%B8%AD%E7%9A%84%E6%96%87%E6%9C%AC%E5%9E%82%E7%9B%B4%E9%97%B4%E8%B7%9D%E6%A0%B9%E6%8D%AE%E8%BE%93%E5%85%A5%E8%80%8C%E5%8F%98%E5%8C%96.png)
我定义了一个主题宏,使用 在我的文档中插入关键思想varwidth
。文档位于 中\doublespacing
,并且我在宏中定义了它\singlespacing
。但是,只有长句子才能实现正确的间距,而短文本(如这里)则无法实现正确的间距。
\documentclass{standalone}
\usepackage{setspace,varwidth,lipsum}
\newcommand{\keynote}[1]{%
\begin{varwidth}{4cm}%
{\singlespacing \narrowragged #1}%
\end{varwidth}%
}
\begin{document}
\doublespacing
\hspace{1cm} \keynote{\lipsum[2]}
\hspace{1cm} \keynote{This note explaining a key idea should go to at least two lines.} \hspace{1cm}
\end{document}
答案1
您必须终止该段落,否则当行距的变化已经因为}
; 而被遗忘时,它将完成。但由于\end{varwidth}
段落无论如何都会结束,并且您处于形成组的环境中,您可以说
\newcommand{\keynote}[1]{%
\begin{varwidth}{4cm}
\singlespacing \narrowragged #1
\end{varwidth}%
}
为什么这个例子有这种特殊性?因为里面\lipsum[2]
有一个命令。如果你使用,那不会有问题,你会看到同样的问题。\par
\lipsum*[2]
\par
现在你知道为什么了:
\begin{varwidth}{4cm}
{\singlespacing\narrowragged some text to be single spaced}
\end{varwidth}
}
当已经取消设置时,将构建“部分文本为单倍行距”段落\singlespacing\narrowragged
。没有内部括号也可以。
答案2
使用spacing
‘setspace’包的环境。
\documentclass{standalone}
\usepackage{setspace,varwidth,lipsum}
\newcommand{\keynote}[1]{%
\begin{varwidth}{4cm}%
\begin{spacing}{1}
{\narrowragged #1}%
\end{spacing}
\end{varwidth}%
}
\begin{document}
\doublespacing
\hspace{1cm} \keynote{\lipsum[2]} \hspace{1cm} \keynote{This note
explaining a key idea should go to at least two lines.}
\hspace{1cm}
\end{document}