![在不同的环境中更改背景颜色](https://linux22.com/image/348090/%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E7%8E%AF%E5%A2%83%E4%B8%AD%E6%9B%B4%E6%94%B9%E8%83%8C%E6%99%AF%E9%A2%9C%E8%89%B2.png)
我有一个很长的 .tex 文档,我想将已经检查过拼写错误的部分的背景颜色更改为浅绿色。我正在寻找一个可以像
\HIGHLIGHT{
<here I want to put a part of my tex file that contains different environments like theorems, figures...>
}
但是\hl{}
命令不能包含其他环境,下面的示例不起作用:
\documentclass[10pt]{article}
\usepackage[english]{babel}
\usepackage{amssymb,amsmath,amsthm,amsfonts}
\usepackage{xcolor,soul}
\newtheorem{theorem}{Theorem}
\begin{document}
\section{Introduction}
\hl{
\begin{theorem}
A theorem.
\end{theorem}
}
\end{document}
您有什么建议可以在这里使用哪个命令(排版不会改变,只改变颜色)?
答案1
正如我在对这个问题的评论中所建议的那样,我将使用tcolorbox
和它的\newtcbtheorem
宏,它们具有两个基本相同的环境,其中一个使用checkedstyle
,另一个使用uncheckedstyle
。如果尚未检查定理,请使用\begin{uctheorem}...\end{uctheorem}
并稍后编辑它,或者只是从定义中\begin{theorem}...\end{theorem}
删除语句。colback={green!50!white}
uncheckedstyle
最终,在我看来, search-and-replace
所有uctheorem
出现的a 将是最好的方式,但这当然只是个人喜好问题。theorem
另一种选择是使用“真实”tcolorbox
环境,它允许本地指定选项,而这在tcbtheorem
环境中是不可能的。
\documentclass[10pt]{article}
\usepackage[english]{babel}
\usepackage{amssymb,amsmath,amsthm,amsfonts}
\usepackage{xcolor}
\usepackage[most]{tcolorbox}
\tcbset{%
checkedstyle/.style={breakable,enhanced, sharp corners,colback={yellow!50!white}},
uncheckedstyle/.style={checkedstyle,colback={green!50!white}}
}
\newtcbtheorem{theorem}{Theorem}{checkedstyle}{theo}
\newtcbtheorem{uctheorem}{Theorem}{uncheckedstyle}{theo}
\begin{document}
\section{Introduction}
\begin{theorem}{My theorem}{foo}
A theorem.
\end{theorem}
\begin{uctheorem}{My other theorem}{foobar}
An unchecked theorem
\end{uctheorem}
\end{document}
答案2
color
作为一种替代方法,它应该可以很好地适用于突出显示 LaTeX 文档的任意部分的用例,一种有趣的方法是使用和部分着色页面背景afterpage
包(基于https://tex.stackexchange.com/a/237427/223749)。这样做的好处是您根本不需要更改内容,并且格式不会受到影响。突出显示将仅覆盖整行,并包括左右边距,但我想这对您的用例来说不是问题。此外,如果突出显示环境中有浮动元素,并且它们浮动在突出显示环境之外,则不会突出显示它们。
MWE,包括一个定理、一个图形和一个分页符:
\documentclass{article}
\usepackage{mwe}
\usepackage{amssymb,amsmath,amsthm,amsfonts}
\newtheorem{theorem}{Theorem}
\usepackage{color}
\definecolor{lightgreen}{rgb}{0.56, 0.93, 0.56}
\usepackage{afterpage}
\makeatletter
% Macro \changepagecolor has the same syntax as \pagecolor or \color
% with an optional argument and a mandatory argument.
\newcommand*{\changepagecolor}{%
\@ifnextchar[\@changepagecolor@i\@changepagecolor@ii
}
% Case: \changepagecolor[...]{...}
\def\@changepagecolor@i[#1]#2{%
\@changepagecolor@do{[{#1}]{#2}}%
}
% Case: \changepagecolor{...}
\newcommand*{\@changepagecolor@ii}[1]{%
\@changepagecolor@do{{#1}}%
}
\newcommand*{\@changepagecolor@do}[1]{%
% Fill the remaining space with a colored rule
\begingroup
\offinterlineskip
\hbox to 0pt{%
\kern-\paperwidth
\vtop to 0pt{%
\color#1%
\hrule width 2\paperwidth height \paperheight
\vss
}%
\hss
}%
\endgroup
% Set page color for the next page
\afterpage{\pagecolor#1}%
}
\makeatother
\newenvironment{highlight}%
{\changepagecolor{lightgreen}}%
{\changepagecolor{white}}
\begin{document}
\blindtext
\blindtext
\blindtext
\blindtext
\begin{highlight}
\blindtext
\begin{theorem}
a theorem.
\end{theorem}
\begin{figure}[!h]
\includegraphics[width=.4\textwidth]{example-image-a}\hfill
\includegraphics[width=.4\textwidth]{example-image-b}
\caption{This is a figure caption within the custom highlight environment}
\end{figure}
\end{highlight}
\blindtext
\end{document}
结果: