我正在用 LaTeX 撰写科学或技术文档。我经常需要输入不间断空格,例如在使用公式引用时:
Equation~\eqref{eq:equation1example} shows blaa...
有没有办法插入不间断的连字符?
例如,这对于通常不会分行的技术术语(如Runge-Kutta
、或)可能很有用。non-linear
non-converging
Van-der-Pol Oscillator
此外,这对于引用和作者姓名或出版商名称可能是理想的。
答案1
如果你使用数学包,您可以使用其\nobreakdash
宏来插入破折号或短破折号,之后不允许换行。
三个示例(均来自该包的用户指南amsmath
):
$p$\nobreakdash-adic
$n$\nobreakdash-dimensional
pages 1\nobreakdash--9
-
基本上,在输入文件中您通常会写 (“dash”) 的地方,现在您会写\nobreakdash-
,而在输入文件中您通常会写--
(“en-dash”) 的地方,现在您会写\nobreakdash--
。
连接起来的表达式$n$\nobreakdash-dimensional
很长,可能会产生错误的换行符。为了避免这种情况发生,同时仍然禁止在 之后换行$n$-
,您可以编写
$n$\nobreakdash-\hspace{0pt}dimensional
这样,如果需要,LaTeX 可以在“Dimensional”子字符串的某个地方找到换行符。大概,你可以接受$n$-dimen-
一行的末尾和sional
下一行的开头。如果你的文档中有很多“n-Dimensional”的实例,那么设置一个宏可能是有意义的,例如
\newcommand\ndim{$n$\nobreakdash-\hspace{0pt}dimensional}
在序言中以及\ndim{}
文件正文的各处写入。
答案2
随着babel
已加载的软件包\babelhyphen{nobreak}
可用(与 和一些其他软件包一起)。虽然它禁止在破折号后换行,但以下单词仍可使用连字符\babelhyphen{soft}
:\babelhyphen{hard}
$n$\babelhyphen{nobreak}dimensional
该语言ngerman
(也许其他语言也是如此)定义了不间断连字符的简写形式:"~
。例如,可以将\addto\extrasenglish{\languageshorthands{ngerman}}
其(和其他ngerman
简写形式)添加到。(可能必须使用 来激活。与 相对,不允许对以下单词进行连字符连接。english
\useshorthands{"}
\babelhyphen{nobreak}
"~
% preamble
\usepackage[ngerman,english]{babel}
\addtoextrasenglish{\languageshorthands{ngerman}\useshorthands{"}}
...
% document
$n$"~dimensional
你也可以自己定义简写——无论是通用的
\defineshorthand{"~}{\babelhyphen{nobreak}}
\useshorthands{"}
或者明确针对一种语言(english
例如):
\defineshorthand[english]{"~}{\babelhyphen{nobreak}}
\addto\extrasenglish{
\languageshorthands{english}
\useshorthands{"}
}
完整示例:
\documentclass{article}
\usepackage[ngerman,english]{babel}
\defineshorthand[english]{"~}{\babelhyphen{nobreak}}
\addto\extrasenglish{
\languageshorthands{english}
\useshorthands{"}
}
\begin{document}
% default:
\parbox{3em}{$n$-dimensional}
\bigskip
% \babelhyphen{nobreak}:
\parbox{3em}{$n$\babelhyphen{nobreak}dimensional}
\bigskip
% new `english' shorthand:
\parbox{3em}{$n$"~dimensional}
\bigskip\selectlanguage{ngerman}
% `ngerman' shorthand:
\parbox{3em}{$n$"~dimensional}
\end{document}
答案3
还可以换行部分不应换行的文本或仅换行中的破折号\mbox{…}
:
\mbox{non-linear}
non\mbox{-}linear
答案4
包裹extdash
提供了几种排版连字符和破折号的选项,包括通过以下方式禁用连字符和破折号后的换行符:
- 在写出的命令中添加星号
something\Hyphdash* something
something\Endash* something
- 加载选项后
shortcuts
,使用等号代替连字符:
something\=/something
something\==/something
(来自包文档的示例)