定義帶有白色輪廓的下劃線,允許斷線和連字符

定義帶有白色輪廓的下劃線,允許斷線和連字符

我定義了一個底線(基於以下站點: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.}

要得到:

例子

但是,底線不會透過單字之間的空格繼續。如果這是一個問題,我不知道如何解決(另見評論這裡我認為達到同樣的效果)。

相關內容