Definieren Sie eine Unterstreichung mit weißer Kontur, die Umbruchlinien und Silbentrennung ermöglicht

Definieren Sie eine Unterstreichung mit weißer Kontur, die Umbruchlinien und Silbentrennung ermöglicht

Ich definiere eine Unterstreichung (basierend auf der folgenden Site:https://alexwlchan.net/2017/10/latex-underlines/).

Dies war mein ursprünglicher Code:

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

Das Problem mit dem Code ist, dass er weder Zeilenumbrüche noch Silbentrennungen zulässt, wenn ich viel Text unterstreiche. Ich habe etwas recherchiert und herausgefunden, dass das \phantomdas \contourProblem sein könnte. Ich habe es also \phantomdurch \textcolorin Weiß ersetzt und Folgendes hinzugefügt (um Konturumbruchlinien zuzulassen):

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

aber das hat mein Problem nicht gelöst, und jetzt habe ich festgestellt, dass \llapweder Zeilenumbrüche noch Silbentrennung zulässig sind ... dann weiß ich nicht, wie ich das Problem lösen kann. Bitte helfen Sie.

Antwort1

Wenn Sie das Vorhandene ändern, können Sie Folgendes verwenden

\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

Dann können Sie die schönen Unterstreichungen von alexwlchan erhalten, die Sie möchten, und sie auch über Zeilenumbrüche hinweg funktionieren lassen. Verwenden Sie es wie folgt:

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

zu bekommen:

Beispiel

Allerdings werden die Unterstreichungen nicht durch Leerzeichen zwischen Wörtern fortgesetzt. Wenn das ein Problem ist, weiß ich nicht, wie ich das lösen soll (siehe auch KommentarHiermit der gleichen Wirkung, glaube ich).

verwandte Informationen