定义带有白色轮廓的下划线,允许断线和连字符

定义带有白色轮廓的下划线,允许断线和连字符

我定义了下划线(基于以下站点: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.}

要得到:

例子

但是,下划线不会穿过单词之间的空格。如果这是个问题,我不知道如何解决(另请参阅评论这里我认为,效果是一样的。

相关内容