Defina um sublinhado com contorno branco que permite quebras e hifenização

Defina um sublinhado com contorno branco que permite quebras e hifenização

Eu defino um sublinhado (com base no seguinte site:https://alexwlchan.net/2017/10/latex-underlines/).

Este foi meu código inicial:

\usepackage{ulem}
\renewcommand{\ULdepth}{1.8pt}
\contourlength{0.8pt}
\newcommand{\myuline}[1]{%
  \uline{\phantom{#1}}%
  \llap{\contour{white}{#1}}%
}

O problema com o código é que ele não permite quebras de linha nem hifenizações se eu sublinhar muito texto. Fiz algumas pesquisas e descobri que esse \phantompoderia \contourser o problema, então substituo \phantompor \textcolorbranco e adiciono o seguinte (para permitir linhas de quebra de contorno):

\usepackage{ulem}
\renewcommand{\ULdepth}{1.8pt}
\contourlength{0.8pt}

% contour each word to allow linebreaks
\RequirePackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\MIR}{m}
 {
  \seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 }
  \seq_map_inline:Nn \l_tmpa_seq { \contour{white}{##1} ~ } \unskip
 }
\ExplSyntaxOff

% define underline
\newcommand{\myuline}[1]{%
  \uline{\textcolor{white}{#1}}%
  \llap{\contour{white}{#1}}%
}

mas isso não resolveu meu problema, e agora percebi que \llapnão permite quebras de linha nem hifenização também... então não sei como posso resolver o problema. Por favor ajude.

Responder1

Modificando o que você tem, você pode usar o seguinte

\usepackage{contour}
\usepackage[normalem]{ulem}
\renewcommand{\ULdepth}{1.8pt}
\contourlength{0.8pt}

\newcommand{\myuline}[1]{%
  \uline{\phantom{#1}}%
  \llap{\contour{white}{#1}}%
}

% myuline on each word to allow linebreaks
\RequirePackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\myulineX}{m}
 {
  \seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 }
  \seq_map_inline:Nn \l_tmpa_seq { \myuline{##1} ~ } \unskip
 }
\ExplSyntaxOff

Então você pode obter os belos sublinhados de alexwlchan que deseja e também fazê-los funcionar nas quebras de linha. Use-o como:

\myulineX{Now the \texttt{myulineX} text will have nice underlines that avoid
  descenders, and also don't cause issues with line-breaking.}

obter:

exemplo

No entanto, os sublinhados não continuam nos espaços entre as palavras. Se isso for um problema, não sei como resolver (veja também o comentárioaquino mesmo efeito, eu acho).

informação relacionada