如何防止 LaTeX 创建 en-dash 和 em-dash?

如何防止 LaTeX 创建 en-dash 和 em-dash?

互联网上到处都有关于如何让 LaTeX 输出 en-dash 和 em-dash 的问题。

我遇到了相反的问题。我有一些文本,我正在从中生成 HTML 和 LaTeX 输出。原始文本与 LaTeX 无关,因此--需要---按原样书写,而不是转换为 en 和 em 破折号。

把它放进去\texttt可能就能解决问题,但是这可能发生在普通文本中,我想知道是否还有其他解决方案。

PS:我正在用软件编写 LaTeX 文件,所以事实上,例如使用\dash{}Instead of every这样的命令-对我来说更容易,如果存在这样的命令的话!

答案1

-----是 TeX 连字符(如flfi)。禁用连字符是包的功能之一微型。您可以停用所有字体的所有连字:

\documentclass{article}
\usepackage{microtype}
\DisableLigatures{}
\begin{document}
---
\end{document}

或者仅限 -family 的连字符rm

\documentclass{article}
\usepackage{microtype}
\DisableLigatures{family=rm*}
\begin{document}
---
\end{document}

或者仅限所有字体的连字-----

\documentclass{article}
\usepackage{microtype}
\DisableLigatures[-]{}
\begin{document}
---
\end{document}

或属于同一家族,例如tt-family:

\documentclass{article}
\usepackage{microtype}
\DisableLigatures[-]{family=tt*}
\begin{document}
\textrm{---} but \texttt{---}
\end{document}

microtype有关禁用连字的更多信息,请参阅包手册。

答案2

您可以分别使用{-}{-}{-}{-}{-}表示 en-dash 和 em-dash,或者定义执行此操作的命令\dash

在此处输入图片描述

\documentclass{article}
​\begin{document}
\newcommand{\dash}{{-}}%
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{lccc}
  & Default & \verb!{ }! & \verb!\dash! \\ \hline
  \verb!-! & - & {-} & \dash \\
  \verb!--! & -- & {-}{-} & \dash\dash \\
  \verb!---! & --- & {-}{-}{-} & \dash\dash\dash \\ \hline
\end{tabular}
\end{document}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

我假设您能够区分数学模式和文本模式,因为在数学模式下使用{-}\dash会弄乱运算符间距。

答案3

\def\normalhyphen{-}
\catcode`-=\active
\protected\def-{\normalhyphen\ifmmode\else\kern0pt \fi}

你不能通过 来指定负尺寸-,但你可以说

\setlength{\mylen}{\normalhyphen 3pt}

答案4

对于 Rmarkdown 用户:-{}- 似乎不起作用,并且花括号会插入到文本中。但是,一种解决方法是在任何连续的连字符之间插入 ${}$。这:

-${}$- -${}$-${}$-

输出为:

-- ---

相关内容