`underscore` 和 `ulem` 包之间的奇怪交互

`underscore` 和 `ulem` 包之间的奇怪交互

underscore和包之间存在奇怪的交互ulem。使用 时\uline{\itshape bbb\_lll},“bbb”为斜体,但“lll”为直立。但是,使用\underline而不是\uline,或者当underscore包未加载时,“lll”会如预期一样变成斜体。

我确实想加载underscoreuline包:

  • underscore能够用来_代替\_
  • ulem具有可破坏的下划线文本(或用 突出显示的文本\markoverwith)。

有没有系统的方法来解决这个问题?

答案1

正如我在评论中提到的那样,如果您最终对突出显示文本感兴趣,则页面占位符文本周围的圆角框支持换行可能会有用。按照这些思路,我检查了一下我censor针对这个问题对软件包的改编是否与软件包兼容underscore。事实证明,跨多行审查(\marktext在引用的页面上)与下划线配合不好。

但是,纯文本\colorbox可以实现突出显示,同时保留下划线后的斜体。当然,缺点是方框不能跨行。以下是 MWE:

\documentclass{article}
\usepackage{ulem}
\usepackage{underscore}
\usepackage{xcolor}\makeatletter
\def\mystrut{\rule[-.2\baselineskip]{0pt}{.9\baselineskip}}
\fboxsep=.5pt
\parskip 1em
\begin{document}
ULINE: \uline{\itshape bbb\_lllg}
\par
COLORBOX: \colorbox{cyan}{\mystrut\itshape bbb\_lllg}
\end{document}

在此处输入图片描述

答案2

你可以试试。但是不要加载包 underscore,而且你仍然必须\_在 的参数中使用 if not \uline

\documentclass{article}
\usepackage{ulem}

\catcode`\_\active
\DeclareRobustCommand*{\uline}{\relax \ifmmode \expandafter \underline
  \else \bgroup \catcode`\_ \active\let_\_\expandafter \ULset \fi} 
\catcode`\_ 8

\begin{document}

\uline{\itshape bbb_lll}

\uline{bbb_lll}

\uline{\bfseries\itshape bbb_lll}

\end{document}

ulemunderscore

由于您需要的不仅仅是\uline您可以尝试:

\documentclass{article}
\usepackage{color}
\catcode`\_\active
\def\ActiveUnderscore {\bgroup\catcode`\_\active\let_\_\let\next= }
\catcode`\_ 8


\begin{document}

\ActiveUnderscore{\colorbox{green}{\itshape bbb_lll}}

\end{document}

主动下划线

相关内容