有时(并非总是如此),规则就像括号一样,左右分明。上一句就是一个例子。在这种情况下,换行符不应该将左侧规则与其右侧的单词分开,也不应该将右侧规则与其左侧的单词分开。遵循此规则的简洁、干净的方法是什么?
为了澄清起见,第一句话应该分解如下:
Sometimes, not always, rules are
-- like parentheses --
left and right.
但并非如此:
Sometimes, not always, rules are --
like parentheses
-- left and right.
附言:
我认为最干净的方法是像这样编写插入(由规则分隔的那种)。这会告诉 TeX 规则是左还是右。这并不是说排版文档在规则和插入之间不应该有空格;这可以通过选项来控制(也可以控制是否使用 em 规则)。(事实上,有一些非常受人尊敬的书使用这种不对称风格,Sc. 来自牛津——20 世纪中期——并由“architypographus”排版。)——但我不知道如何实现这一点。
答案1
在这里,我通过使用来克服 en-dash 换行的自然倾向\char"7B
。(注意:em-dash 的替代方案是\char"7C
)
在 MWE 中,通过设置\textwidth
为0pt
,它会在每个机会处强制换行和连字符。但我们发现它在开始的短破折号之后和结束的短破折号之前被避免了。
\documentclass{article}
\textwidth 0pt
\begin{document}
Sometimes, not always, rules are \char"7B~like parentheses~-- left and right.
\end{document}
可以将其宏化为\dashphrase
:
\documentclass{article}
\newcommand\dashphrase[1]{\char"7B~#1~--}
\begin{document}
\parbox[b]{163pt}{
Sometimes, not always, rules are \dashphrase{like parentheses} left and right.}
\parbox[t]{164pt}{
Sometimes, not always, rules are \dashphrase{like parentheses} left and right.}
\end{document}
类似这样的替代定义
\newcommand\dashphrase[2][7B]{\char"#1~#2~\char"#1 }
将允许一个可选参数,例如7C
提供 em-dash,而不是 en-dash。
补充:
由于 OP 希望破折号具有左右意义(但并非总是如此),而这无法从上下文中清楚地看出,我能想到的唯一其他方法就是为此牺牲 2 个键盘字符(已激活)。在这里我选择<
和>
,它们将在数学模式下恢复其正常含义。
\documentclass{article}
\let\svlb<
\let\svrb>
\catcode`\<=\active
\def<{\ifmmode\expandafter\svlb\else\char"7B ~\fi}
\catcode`\>=\active
\def>{\ifmmode\expandafter\svrb\else~\char"7B \fi}
\begin{document}
\parbox[b]{163pt}{
Sometimes, not always, rules are <like parentheses> left and right.}
\parbox[t]{164pt}{
Sometimes, not always, rules are <like parentheses> left and right.}
$a<b>c$
\end{document}