在我当前文本的许多地方,我必须插入类似这样的内容Name_of_model
。我在这个答案非常有帮助。但是,我在宏的参数连字符方面遇到了问题\escapeus
。我该如何改进\escapeus
才能启用参数的连字符。具体来说,如果需要连字符,应该将其放在下划线后面,例如:Name_of_-model
。
\DeclareRobustCommand*{\escapeus}[1]{%
\begingroup\@activeus\scantokens{#1\endinput}\endgroup}
\begingroup\lccode`\~=`\_\relax
\lowercase{\endgroup\def\@activeus{\catcode`\_=\active \let~\_\discretionary{-}{}{}}}
我的所有尝试(包括移动_
)都失败了。
我怎样才能改进上述代码,以便能够对 参数进行连字符连接\escapeus
?
答案1
\let~\_\discretionary{-}{}{}
定义_
为然后\_
插入自由裁量权在定义点你的意图
\def~{\_\discretionary{-}{}{}}
这修复了你原来的定义,另一种机制在原始的 OT1 编码中不起作用,就是把 _ 变成一个普通字符,然后你会得到一些自动连字(如果你使用特殊模式,则会更多),并且可以_
使用\hyphenation
\documentclass{article}
\usepackage[T1]{fontenc}
\textwidth3cm
\catcode`\_=12
\lccode`\_`\_
\hyphenation{four_-fifty-five_-six one_-two_-three}
\begin{document}
one two thee four one_two_three four_fiftyfive_six
one two thee four one_two_three four_fiftyfive_six
\end{document}