字母间距是一种特殊的强调方式,通常与黑体字体结合使用。字母间距的字符间距为 0.125 em,但保留了一些连字符。例如:»B ä ck er ſt ra ß e« 如何使用 (La)TeX 获取字母间距?
答案1
使用microtype
软件包和 pdfTeX,您只需将要强调的文本括在命令中即可。您可以通过添加到软件包选项来\textls
全局调整字母间距 (Sperrsatz) 的数量,或者也可以通过将其作为命令的可选参数提供来局部调整字母间距 (Sperrsatz)(以 1/1000 em 的倍数为单位)。letterspace=125
\textls
\documentclass{article}
\usepackage{yfonts}
\usepackage[letterspace=125]{microtype}
\begin{document}
\frakfamily
\textls{B\"ackerstra\ss e}
\textls[50]{B\"ackerstra\ss e}
\end{document}
microtype
如果您对边距调整等其他功能不感兴趣,那么您可以letterspace
使用相同的选项加载该包。
答案2
这一页UniFraktur 项目的详细介绍了字母间距并展示了如何使用 XeLaTeX。
答案3
您可以使用soulutf8包及其\sodef
命令来定义新命令来获取所需的字母间距;为了维护可以\mbox
在新定义的命令的参数中使用的连字符:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{soulutf8}
\sodef\Sp{}{.125em}{1em plus1em}{2em plus.1em minus.1em}
\begin{document}
\Sp{Bäcker\mbox{ßt}raße}
\end{document}
答案4
LuaLaTeX 解决方案。
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\letterspaced{Latin Modern Roman}[LetterSpace=50]
\begin{document}
Hello world
{\letterspaced Hello world}
Hello world
\end{document}
输出:
还有一种替代解决方案,不需要定义字体系列,但它慢得多。
\documentclass{article}
\usepackage{fontspec}
\begin{document}
\fontspec{Latin Modern Roman} % set the default font https://tex.stackexchange.com/q/643918/250119
Hello world fi
{
\addfontfeature{LetterSpace=50}
Hello world fi
}
{
\addfontfeature{LetterSpace=50,Ligatures={NoCommon, NoDiscretionary}} % https://tex.stackexchange.com/a/103242/250119
Hello world fi
}
Hello world fi
\end{document}
输出:
- 第一行是普通文本,
- 第二行是 LetterSpace,
- 第三行是禁用连字符的 LetterSpace,
- 第四行恢复正常文本。
慢多少?
我比较了两个文档,发现它们有以下变化:
\csname prg_replicate:nn\endcsname{200}{
{\letterspaced Hello world}
}
相对
\csname prg_replicate:nn\endcsname{200}{
{\addfontfeature{LetterSpace=50} Hello world}
}
所用时间分别为 0 分 4.137 秒和 0 分 1.254 秒。因此,每次使用耗时为 14 毫秒,或者:每使用 70 次\addfontfeature
,编译时间就会减慢一秒。