![定义长度大于 Cabin 默认值的破折号](https://linux22.com/image/455575/%E5%AE%9A%E4%B9%89%E9%95%BF%E5%BA%A6%E5%A4%A7%E4%BA%8E%20Cabin%20%E9%BB%98%E8%AE%A4%E5%80%BC%E7%9A%84%E7%A0%B4%E6%8A%98%E5%8F%B7.png)
我注意到,破折号的长度并不总是统一的,这取决于所使用的字体。
考虑以下定义破折号的代码:
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[sfdefault]{cabin}
\newcommand{\emdash}{\nobreak---\nobreak\hskip0pt}
\begin{document}
\thispagestyle{empty}
\LARGE
\textit{Nobody goes there anymore. It's too crowded.}
\hfill \emdash Yogi Berra
\end{document}
并产生
问题:我该如何修改上述代码,以便增加 产生的破折号的长度\emdash
?我天真地以为,也许再加一个破折号就能达到这个目的,但事实并非如此。
谢谢。
答案1
正如我在评论中提到的,一种可能性是使用规则。您可以\emdash
像这样定义自定义命令:
\newcommand{\emdash}{\rule[4.7pt]{20pt}{1.3pt}}
这种方法的一个优点是您可以完全精细地控制长度和其他尺寸。在上面的例子中,第一个(可选)参数4.7pt
是将规则提升到基线以上多远,第二个参数20pt
是规则的宽度,最后一个参数1.3pt
是规则的厚度(或“高度”)。
按您认为合适的方式进行调整。
一个缺点是您根本没有使用字体中的文本字符,因此如果有人从您的 PDF 中复制和粘贴,他们将不会得到任何代表“破折号”的内容。
完整示例:
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[sfdefault]{cabin}
\newcommand{\emdash}{\rule[4.7pt]{20pt}{1.3pt}}
\begin{document}
\thispagestyle{empty}
\LARGE
\textit{Nobody goes there anymore. It's too crowded.}
\hfill \emdash Yogi Berra
\end{document}
答案2
就笔画粗细而言,使用与 Cabin 兼容的字体,并具有适当大小的破折号;cmss
似乎合适。
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[sfdefault]{cabin}
\newcommand{\longemdash}{{\fontfamily{cmss}\selectfont---}}
\newcommand{\emdash}{\nobreak---\nobreak\hskip0pt}
\newcommand{\funnyquote}[2]{%
\par\noindent\textit{#1}\\*\hspace*{\fill}\longemdash#2%
}
\begin{document}
\funnyquote{Nobody goes there anymore. It's too crowded.}{Yogi Berra}
\end{document}
答案3
Unicode 字符有双破折号 (U+2E3A),但 Cabin 没有此字形。也许最简单的解决方案是使用两个常规破折号,但添加一些负字距调整,这样就不会出现可见的间隙,如下所示:---\!---
完整 MWE:
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[sfdefault]{cabin}
\newcommand{\emdash}{\nobreak ---\!--- \nobreak\hskip0pt}
\begin{document}
\thispagestyle{empty}
\LARGE
\textit{Nobody goes there anymore. It's too crowded.}
\hfill \emdash Yogi Berra
\end{document}
如果太多,您还可以使用两个或三个短破折号,或增加字距:(\kern -5pt
而不仅仅是\!
)或类似的。