我定义了下划线(基于以下站点: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.}
要得到:
但是,下划线不会穿过单词之间的空格。如果这是个问题,我不知道如何解决(另请参阅评论这里我认为,效果是一样的。