Cambiar el color de fondo en diferentes entornos

Cambiar el color de fondo en diferentes entornos

Tengo un documento .tex largo y quiero cambiar el color de fondo de las partes que ya revisé para detectar errores tipográficos a un verde claro. Estoy buscando un comando fácil que pueda usarse como

\HIGHLIGHT{

<here I want to put a part of my tex file that contains different environments like theorems, figures...>

}

Pero el \hl{}comando no puede contener otros entornos, el siguiente ejemplo no funciona:

\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}

¿Tiene alguna sugerencia sobre qué comando podría usarse aquí (no se cambiará la composición tipográfica, solo el color)?

Respuesta1

Como se sugiere en uno de mis comentarios a la pregunta, usaría tcolorboxy sus \newtcbtheoremmacros, teniendo dos entornos básicamente idénticos, donde uno usa checkedstyley el otro uncheckedstyle. Si un teorema aún no está verificado, úselo \begin{uctheorem}...\end{uctheorem}y edítelo más tarde \begin{theorem}...\end{theorem}o simplemente elimine la colback={green!50!white}declaración de la definición de uncheckedstyle.

Al final, desde mi punto de vista, una search-and-replacede todas uctheoremlas ocurrencias theoremsería la mejor manera, pero eso es una cuestión de gustos, por supuesto.

Otra opción es utilizar un tcolorboxentorno "real" que permita la especificación local de opciones, lo que no es posible con los tcbtheorementornos.

\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}

ingrese la descripción de la imagen aquí

Respuesta2

Como alternativa que debería funcionar bien para su caso de uso de resaltar partes arbitrarias de un documento LaTeX, un enfoque interesante es colorear parcialmente el fondo de la página usando coloryafterpage (basado enhttps://tex.stackexchange.com/a/237427/223749). Esto tiene la ventaja de que no necesita cambiar su contenido en absoluto y el formato no se verá afectado. El resaltado solo cubrirá líneas completas e incluirá también los márgenes izquierdo y derecho, pero supongo que eso no es un problema para su caso de uso. Además, si hay elementos flotantes dentro de su entorno de resaltado y salen flotando de él, no se resaltarán.

MWE, incluyendo un teorema, una figura y un salto de página:

\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}

El resultado:

ingrese la descripción de la imagen aquí

información relacionada