答案1
任务不明确:当蓝色文本开始出现在一行内时该怎么办?
问题在于 TeX在处理\baselineskip
时使用整个段落的值。\par
您的示例可以使用两个段落来解决,第一个段落是黑色文本,第二个段落是蓝色文本。第一个段落以不带伸缩性的形式完成\parfillskip
,第二个段落以 开头\noindent
并带有 修改\baselineskip
。
\documentclass{article}
\usepackage{setspace,lipsum}
\setstretch{1.2}
\usepackage{xcolor}
\def\endpar{{\parfillskip=0pt \par}
\smallskip\baselineskip=10pt \lineskiplimit=-10pt \noindent}
\begin{document}
\lipsum[1] {\endpar\color{blue}\lipsum[2]\par}
\lipsum[1]
\end{document}
答案2
如果蓝色部分之前的部分不够长,则此方法不起作用,因为它可能会在最后一行产生较大的单词间空格。
这个想法类似于wipet 的但是我使用了适当的 LaTeX 环境,这样就无需进行明确的说明\par
,\color
而且无需猜测就能获得正确的顶行间距。
\documentclass{article}
\usepackage{setspace}
\usepackage{xcolor}
\usepackage{lipsum}% for the example
\setstretch{1.2}
\newenvironment{innerpar}[1]{%
{\unskip\strut\parfillskip=0pt \par}%
\vspace*{0.2\baselineskip}%
\setstretch{1}\noindent\ignorespaces\color{#1}%
}{\par}
\begin{document}
\lipsum[1]
\begin{innerpar}{blue!60}
\lipsum[2]
\end{innerpar}
\lipsum[1]
\end{document}