Search code examples
latexhyphenation

Latex: replace hyphenation character by a backwards arrow


I am setting e.g. directory names in a typewriter font. These names can become long. With the hyphenat package, I enabled hyphenation. Now, what is missing, is that the hyphenation character is replaced e.g. by a backwards oriented arrow. Thus, what I want to do is something like

\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}

however, \ensuremath{\hookleftarrow} does not work in this case - it is not a single character.

Can somebody point me towards a solution? Thanks a lot!


Solution

  • You cannot set the \hyphenchar to a character from a different font, but you can redefine \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}