防止命令中的本地行距被覆盖

防止命令中的本地行距被覆盖

我想在自定义命令中本地更改行距。但是,finalrenewcommand会覆盖自定义命令中的行距。我该如何在本地设置行距并防止其被覆盖?

我知道设置行距的其他方法,但由于我正在修改不属于我的代码,所以我想坚持使用baselinestretch

测试.sty:

\xdef\@singlespaced{1}

\newcommand\lalala{
    \let\baselinestretch\@singlespaced{
        sdfhjsdkfh sfjkhsdjfhs sdfkhskdjfhs dfksdhfjkshdf jkhsdkfjhsdkjf hskjdfhksjfh skjfh skjdfhksjf hskjdfhskjdfh skjfh skjfh skjdfh skjdhf skdf
    }
}

\renewcommand{\baselinestretch}{2}

主要.tex:

\documentclass{report}

\usepackage{test}

\begin{document}
    \lalala
\end{document}

答案1

更改后需要设置文本大小\baselinestretch才能生效。要使更改成为本地更改,您应该将其里面组内,而不是组前。由于\baselinestretch总是影响整个段落,因此您需要将段落内容\lalala与周围文本分开。

\documentclass{report}

\usepackage{lipsum}

\newcommand\lalala{%
    \par
    {\def\baselinestretch{1}\normalsize
        sdfhjsdkfh sfjkhsdjfhs sdfkhskdjfhs dfksdhfjkshdf jkhsdkfjhsdkjf hskjdfhksjfh skjfh skjdfhksjf hskjdfhskjdfh skjfh skjfh skjdfh skjdhf skdf%
        \par
    }%
}

\renewcommand{\baselinestretch}{2}

\begin{document}

\lipsum[1]
\lalala
\lipsum[2]

\end{document}

MWE 输出

相关内容