"= 和 \hyp{} 有什么区别?

"= 和 \hyp{} 有什么区别?

有时我会看到一些问题讨论使用"=,而其他问题只是使用\hyp{}。它们是同一件事吗?

例如,在这些问题中,你可以找到"=\hyp使用:

  1. 包含斜线的单词的连字
  2. LaTeX 无法正确连字,文本超出页面范围
  3. 如何用连字符连接带有姓氏的参考文献?

我尝试创建这个最小的示例,但是"=没有作用:

\documentclass[10pt,a5paper,twoside]{article}
\usepackage{hyphenat}
\usepackage[english]{babel}

\begin{document}

\section{Show font}

    Tests.

    Encoding-encoding-encoding-encoding-encoding-encoding-encoding-encoding-encoding-encoding.

    Encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding.

    Encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding.

\end{document}

在此处输入图片描述

答案1

为了使"=速记指令在你的文档中发挥作用,你必须替换

 \usepackage[english]{babel}

 \usepackage[ngerman,english]{babel} 
 \useshorthands{"} 
 \addto\extrasenglish{\languageshorthands{ngerman}}

babel:将德语简写添加到英语作为主要文档语言了解有关此主题的更多信息。

一旦进行了调整,看起来\hyp{...}和的"=表现非常相似。"=不过,在实践中, 似乎更容易使用。

下列截图中的垂直框线是由showframe包放置的。

在此处输入图片描述

\documentclass[10pt,a5paper,twoside]{article}

\usepackage{hyphenat} % for "\hyp" macro

%% See https://tex.stackexchange.com/q/27198/5001:
\usepackage[ngerman,english]{babel} 
\useshorthands{"} 
\addto\extrasenglish{\languageshorthands{ngerman}}

\usepackage{showframe,microtype} % just for this example
\begin{document}
*

Encoding-encoding-encoding-encoding-encoding-encoding-encoding-encoding-encoding-encoding.

Encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding"=encoding.

Encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding\hyp{}encoding.

\end{document}

答案2

"=in没有预定义的行为,babel它依赖于语言(但在大多数情况下它是一个硬连字符)。除了加载之外ngerman,您还可以通过以下方式直接定义它:

\useshorthands{"} 
\defineshorthand{"=}{\babelhyphen{hard}}

相关内容