我能否均匀地拉伸一个几乎填满一行的句子以填满该行?

我能否均匀地拉伸一个几乎填满一行的句子以填满该行?

是否存在一种水平作用方式与\setstretch垂直作用方式类似的“句子拉伸”?

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{microtype}
\begin{document}

\noindent This is a rather short sentence that will not fill a line.

{\raggedright
\spaceskip  2\fontdimen2 \font
This is a rather short sentence that will not fill a line.

\spaceskip  1em  \relax
This is a rather short sentence that will not fill a line.
}

% Or from microtype:
\noindent\textls[150]{This is a rather short sentence that will not fill a line.}

\end{document}

1/3 em上述方法应仅在需要时谨慎使用,因为 TeX 中的单词间距设计考虑到了给定字体的良好排版。例如,默认 CM 使用可拉伸至1/2 em和可收缩至的单词间距,而2/9 em不会太丑陋。

通过使用 设置明确的值(如)或当前字体,更改\spaceskip将影响所有字体的字间间距。1em<factor>\fontdimen2 \font

第二种方法可以用来microtype控制字符之间的间距。这是通过 实现的\textls[<percentage>]{<text>}

例如,如果fontspec与 XeLaTeX 一起使用,您也可以使用类似以下设置fontspec

\newfontfamily\mycustomfont[LetterSpace=12,WordSpace=2,Ligatures=NoCommon]{<font name>}

笔记:

我的解决方案在设计页眉、封面、徽标等时特别有用。如果只对填充线条感兴趣,那么@egreg 的解决方案是直接的方法。

答案2

当然:

\documentclass{article}
\usepackage{lipsum}

\newenvironment{stretchpars}
 {\par\setlength{\parfillskip}{0pt}}
 {\par}

\begin{document}

\lipsum[2]

\begin{stretchpars}
\lipsum[2]
\end{stretchpars}

\end{document}

在此处输入图片描述

答案3

与...合作时仅有的如果你想拉伸整个文本块中的一行文本,可以使用stretch 选项\makebox

在此处输入图片描述

\documentclass{article}
\setlength{\parindent}{0pt}% Just for this example
\begin{document}

This is a rather short sentence that will not fill a line.

\makebox[\textwidth][s]{This is a rather short sentence that will not fill a line.}

\hrulefill

This is a rather lengthy sentence that will most certainly fill the entire first line of the paragraph.

\makebox[\textwidth][s]{This is a rather lengthy sentence that will most certainly fill the entire first line of the paragraph.}

\end{document}

这将仅拉伸空格以适应给定宽度内的句子。但请注意,过满的句子将超出文本块宽度。使用egreg 的\parfillskip方法因为此时你处理的是段落,而不是单行句子。

答案4

至于行距,你可以通过以下方式实现

\vspace{length}

或者

\vfill

在句子之间。

至于字母间距。LuaTeX 和 Microtype 可以实现所需的效果。使用:

\textls[150]{VECTOR ANALYSIS}

但是在 XeTeX 上您需要使用 Fontspec 并调整字体功能:

LetterSpace = ...

WordSpace = ...

在此处输入图片描述

我建议通过创建一个命令来实现这一点,以便能够在您可能使用的其他不同字体之间共享这些功能,例如

假设您要共享几种标题样式的某些功能,然后通过创建如下命令:

\newcommand{\titlingFontFeatures}{%

    ...
    LetterSpace = 100,
    WordSpace = 2,
    ...
}

然后你可以使用:

\newcommand{\bigTitle}[1]{{\fontspec
[
    \titlingFontFeatures
]
{Helvetica}
\fontsize{18}{20}\selectfont#1
\par}}

分享这个新字体的功能。

如果您不使用 pdfLatex,Microtype 就不是一个选择,而且由于您对字体如此重视,您可能不久前就迁移到了 XeTeX 或 LuaTeX 之类的字体,现在,即使在 LuaTeX 上,Microtype 也没有很多实际可用的功能。因此,Fontspec 是最佳选择。

相关内容