underscore
和包之间存在奇怪的交互ulem
。使用 时\uline{\itshape bbb\_lll}
,“bbb”为斜体,但“lll”为直立。但是,使用\underline
而不是\uline
,或者当underscore
包未加载时,“lll”会如预期一样变成斜体。
我确实想加载underscore
和uline
包:
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}
由于您需要的不仅仅是\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}