这是这个问题。
以下代码可以很好地突出显示段落(以及内联文本)。
\makeatletter
\newcommand{\hl}[1]{%
\setbox\@tempboxa\hbox{#1}%
\ifdim\wd\@tempboxa>\linewidth
\noindent
\colorbox{pink}{%
\parbox{\dimexpr\linewidth-2\fboxsep}{#1}%
}%
\else
\colorbox{pink}{#1}%
\fi}%Highlighter.
\makeatother
但是当我们将其用于 enumerate
环境时会出现以下错误。
出了点问题 — — 也许缺少了 \item。}
作为菲利佩·奥莱尼克提到此评论 \trivlist
不允许段落分隔,因此我很好奇如何破解这种行为并给出一个全局解决方案,即使我无论使用什么环境(例如theorem
)都会突出显示页面(例如 Microsoft Word、Libre office writer 等)。
如何破解enumeration
以突出显示枚举列表?
最小工作示例:
\documentclass{article}
\usepackage{xcolor}
\usepackage{lipsum}
\makeatletter
\newcommand{\hl}[1]{%
\setbox\@tempboxa\hbox{#1}%
\ifdim\wd\@tempboxa>\linewidth
\noindent
\colorbox{pink}{%
\parbox{\dimexpr\linewidth-2\fboxsep}{#1}%
}%
\else
\colorbox{pink}{#1}%
\fi}%Highlighter.
\makeatother
\begin{document}
\hl{\lipsum[2]}
\lipsum[1]
Some inline \hl{ text} need to be highlighted.
\hl{
\begin{enumerate}
\item This enumeration gives error
\end{enumerate}
}
\end{document}
答案1
为什么不嵌套enumerate
在shaded*
环境中?这样可以跨页面拆分。下面是带有framed
和enumitem
包的代码:
\documentclass{article}
\usepackage{xcolor}
\usepackage{lipsum}
\makeatletter
\newcommand{\hl}[1]{%
\setbox\@tempboxa\hbox{#1}%
\ifdim\wd\@tempboxa>\linewidth
\noindent
\colorbox{pink}{%
\parbox{\dimexpr\linewidth-2\fboxsep}{#1}%
}%
\else
\colorbox{pink}{#1}%
\fi}%Highlighter.
\makeatother
\usepackage{framed}
\usepackage{enumitem}
\begin{document}
\hl{\lipsum[2]}
\lipsum[1]
Some inline \hl{ text} need to be highlighted.
\colorlet{shadecolor}{pink}
\begin{shaded*}
\begin{enumerate}[wide = 0pt, before=\vspace*{-\dimexpr\topsep+\partopsep+1.5ex}, after=\vspace*{-\dimexpr\topsep+\partopsep+1.5ex}]
\item This enumeration gives no error
\item This enumeration gives no error
\end{enumerate}
\end{shaded*}
Some normal text.
\end{document}