我正在用打字机字体设置目录名称。这些名称可能会很长。使用 hyphenat 包,我启用了连字功能。现在,缺少的是,连字字符被替换为向后的箭头。
因此,我想做的是
\usepackage[htt]{hyphenat}
\newcommand{\origttfamily}{}%
\let\origttfamily=\ttfamily %
\renewcommand{\ttfamily}{\origttfamily \hyphenchar\font\ensuremath{\hookleftarrow}}
\begin{document}
\texttt{/etc/really/long{\fshyp}directory{\fshyp}name/}
\end{document}
但是,\ensuremath{\hookleftarrow}
在这种情况下不起作用 - 它不是一个单个字符。
有人能给我一个解决方案吗?非常感谢!
(移自https://stackoverflow.com/questions/4749869/latex-replace-hyphenation-character-by-a-backwards-arrow)
答案1
您不能将设置\hyphenchar
为不同字体的字符,但可以重新定义\BreakableSlash
:
\documentclass{minimal}
\usepackage[htt]{hyphenat}
\newsavebox\leftarrowbox
\sbox\leftarrowbox{$\leftarrow$}
\makeatletter
\renewcommand*{\BreakableSlash}{%
\leavevmode
\prw@zbreak
/%
\discretionary{\usebox\leftarrowbox}{}{}%
\prw@zbreak
}
\makeatother
\begin{document}
\parbox{20mm}{%
\texttt{/etc\fshyp really\fshyp long\fshyp directory\fshyp name/}%
}
\end{document}
答案2
据我所知,\hyphenchar
只能用作
\hyphenchar\font=<number>
其中\font
是 TeX 字体,<number>
是字体中字形的代码。例如:
\font\tenrm=cmr10
\font\tentt=cmtt10
\hyphenchar\tenrm=`\* % set the hyphenation char of cmr10 to be *
\hyphenchar\font=`\- % set the hyphenation char of current font to be -
\hyphenchar\tentt=-1 % set the hyphenation char of cmtt19 to be empty
(此处,\*
重音符后面表示符号的字符代码*
。)
也就是说,如果您使用的字体没有这个字形,您就不能使用钩左箭头符号作为连字符。
也许您可以使用一些特殊字体来解决这个问题,或者其他人有其他技巧。
还有另一种方法可以手动获取特殊连字。例如,我们可以重新定义活动字符~
来执行此操作:
\def~{\discretionary{\mbox{$\hookleftarrow$}}{}{}}
\parbox{2em}{dif~fer~ent}
答案3
如果你遇到一种情况,你希望你的连字符是这样的\hookleftarrow
,而菲利普的回答确实如此不是帮助,那么仍然可以选择创建虚拟字体。通过这种方式,您可以规避\hookleftarrow
来自不同字体的问题以及它不是单个字符的问题。这并不像听起来那么难:如果您需要这个,我可以填写详细信息。