宏中的文本垂直间距根据输入而变化

宏中的文本垂直间距根据输入而变化

我定义了一个主题宏,使用 在我的文档中插入关键思想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}

相关内容