互联网上到处都有关于如何让 LaTeX 输出 en-dash 和 em-dash 的问题。
我遇到了相反的问题。我有一些文本,我正在从中生成 HTML 和 LaTeX 输出。原始文本与 LaTeX 无关,因此--
需要---
按原样书写,而不是转换为 en 和 em 破折号。
把它放进去\texttt
可能就能解决问题,但是这可能发生在普通文本中,我想知道是否还有其他解决方案。
PS:我正在用软件编写 LaTeX 文件,所以事实上,例如使用\dash{}
Instead of every这样的命令-
对我来说更容易,如果存在这样的命令的话!
答案1
--
和---
是 TeX 连字符(如fl
或fi
)。禁用连字符是包的功能之一微型。您可以停用所有字体的所有连字:
\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 用户:-{}- 似乎不起作用,并且花括号会插入到文本中。但是,一种解决方法是在任何连续的连字符之间插入 ${}$。这:
-${}$- -${}$-${}$-
输出为:
-- ---