
У меня есть длинный .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
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
В качестве альтернативы, которая должна хорошо подойти для вашего варианта использования выделения произвольных частей документа LaTeX, интересным подходом является частичное окрашивание фона страницы с использованием пакетов color
и 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}
Результат: