Определите подчеркивание с белым контуром, которое позволяет создавать разрывы и переносы.

Определите подчеркивание с белым контуром, которое позволяет создавать разрывы и переносы.

Я определяю подчеркивание (на основе следующего сайта:https://alexwlchan.net/2017/10/latex-underlines/).

Вот мой первоначальный код:

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

Проблема с кодом в том, что он не допускает переносов строк и дефисов, если я подчеркиваю много текста. Я провел небольшое исследование и обнаружил, что это \phantomможет \contourбыть проблемой, поэтому я заменяю \phantomна \textcolorна белом и добавляю следующее (чтобы разрешить линии переноса контура):

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

но это не решило мою проблему, и теперь я понял, что это \llapне позволяет переносы строк и переносы слов... тогда я не знаю, как мне решить эту проблему. Пожалуйста, помогите.

решение1

Изменив то, что у вас есть, вы можете использовать следующее

\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

Затем вы можете получить красивые подчеркивания alexwlchan, которые вам нужны, а также заставить их работать через переносы строк. Используйте это так:

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

получить:

пример

Однако подчеркивания не продолжаются через пробелы между словами. Если это проблема, я не знаю, как ее решить (см. также комментарийздеськ тому же эффекту, я думаю).

Связанный контент