下線を定義します(次のサイトに基づいています)。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
そこで、 を in whiteに\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.}
取得するため:
しかし、下線は単語間のスペースを越えて続きません。それが問題なら、解決方法がわかりません(コメントも参照してください)ここ同じ意味だと思います。