定义长度大于 Cabin 默认值的破折号

定义长度大于 Cabin 默认值的破折号

我注意到,破折号的长度并不总是统一的,这取决于所使用的字体。

考虑以下定义破折号的代码:

\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而不仅仅是\!)或类似的。

相关内容