¿Alternativa al paquete soul?

¿Alternativa al paquete soul?

Contexto

Es posible que desee resaltar algún texto o tacharlo. Esto se puede hacer con el soulpaquete o con el ulempaquete .usando un truco, aunque no funciona tan bien.

Problema

El problema que tengo con soul es que no se comporta bien con glosarios, nuevos comandos o citas. Básicamente, no puedes tomar todo el texto y rodearlo con un\hl{} como se ha comentado.en otra parte. Y una solución alternativa \mbox{\gls{toto}}o incluso simplemente {\gls{toto}}hacer el truco.

Por ejemplo, consulte el siguiente ejemplo de trabajo mínimo:

\documentclass{article}

\usepackage{soul}
\usepackage[acronym]{glossaries}
\usepackage{color}

\newacronym{co2}{CO$_2$}{carbon dioxide}
\newcommand{\etal}{\textit{et al.}}

\begin{document}
    
    Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.
Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.
    
    
    \begin{thebibliography}{9}
        \bibitem{latexcompanion} 
        Michel Goossens, Frank Mittelbach, and Alexander Samarin. 
        \textit{The \LaTeX\ Companion}. 
        Addison-Wesley, Reading, Massachusetts, 1993.
    \end{thebibliography}
    
\end{document}

que se compila bien mientras:

    [...]
\begin{document}
    
    \hl{Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.
Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.}
    
    [...]

muestra un montón de mensajes de error, parcialmente solucionados por:

    [...]
\begin{document}
    
    Lorem ipsum \mbox{\gls{co2}} \hl{dolor by Toto \mbox{\etal{}} {\cite{latexcompanion}} sit amet, consectetur adipiscing elit.
Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \mbox{\gls{co2}}.}
    
    [...]

que falla si incluyo el primero \mbox{\gls{co2}}en el \hl{}comando. ¿Quizás sea demasiado largo?

Preguntas

  • Qué exactamentees¿El problema entre soulel \hl{}comando y las entradas del glosario o \cite{}?\etal{}
  • ¿Cómo solucionar estos problemas? (las soluciones propuestas solo funcionan parcialmente)
  • ¿Existe alguna alternativa que permita algo así, \hl{}pero que pueda rodear un bloque de código completo, que posiblemente contenga figuras, texto, etc.? En otras palabras, ¿existe una forma sencilla de cambiar el color de fondo de una sección concreta?

Lo mejor que se me ocurrió es usar un cuadro de color (ver tambiénaquí), como esto:

[...]
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
[...]
    \begin{tcolorbox}[breakable,notitle,boxrule=0pt,colback=yellow,colframe=yellow]
    
    Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.
Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.
    
    \end{tcolorbox}
[...]

Pero cambia el formato del texto...


Actualización a junio de 2023

Si está utilizando LuaLaTeX para la compilación, puede agregar lo siguiente a su preámbulo:

\usepackage{luacolor}
\usepackage[soul]{lua-ul}

y luego utilizar \hl{Lorem ipsum...}normalmente, como se describeaquí. Este método tiene la ventaja de ser robusto \enquote, a diferencia de algunas de las soluciones siguientes.

Respuesta1

ulemSupongo que puedes usar el paquete para lograr lo que quieres. También hay un truco para que soulfuncione.

EDITAR: Con respecto a su segunda pregunta, si existe una manera sencilla de cambiar el color de fondo de una sección precisa que posiblemente contenga figuras, texto, etc., esto no es tan fácil. Puede utilizar enfoques que envuelvan su contenido en otro entorno (como mdframedo tcolorbox), pero esto puede afectar su formato y también puede restringir ciertos comandos/elementos internos, especialmente los flotantes. He incluido un ejemplo basado en tcolorboxel siguiente que funciona al menos para contenido simple. Además, agregué un enfoque alternativo que utiliza afterpagepara cambiar el fondo de la página.

ulem

Defina su propio hlcomando de esta manera (cmp.https://tex.stackexchange.com/a/48549/223749):

\usepackage[normalem]{ulem}
\newcommand\hl{\bgroup\markoverwith
    {\textcolor{yellow}{\rule[-.5ex]{.1pt}{2.5ex}}}\ULon}

Con esto, su MWE se compila bien. (Mira estohttps://tex.stackexchange.com/a/254337/223749para posibles problemas). Usando el soutcomando de ulemusted también puede tachar el mismo texto en el MWE sin errores.

MWE completo (a su MWE le faltaba un \makeglossariescomando):

\documentclass{article}

\usepackage[normalem]{ulem}
\newcommand\hl{\bgroup\markoverwith
  {\textcolor{yellow}{\rule[-.5ex]{.1pt}{2.5ex}}}\ULon}
\usepackage[acronym]{glossaries}
\usepackage{color}

\newacronym{co2}{CO$_2$}{carbon dioxide}
\newcommand{\etal}{\textit{et al.}}
\makeglossaries

\begin{document}

\hl{Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.}
\sout{Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.}
    
    
    \begin{thebibliography}{9}
        \bibitem{latexcompanion} 
        Michel Goossens, Frank Mittelbach, and Alexander Samarin. 
        \textit{The \LaTeX\ Companion}. 
        Addison-Wesley, Reading, Massachusetts, 1993.
    \end{thebibliography}
    
\end{document}

alma

Si desea seguir adelante soul, también existe una solución alternativa para sus problemas \soulregistersiguiendo esta respuesta (https://tex.stackexchange.com/a/139500/223749). Esto también proporciona una posibilidad de tachado.

MWE completo:

\documentclass{article}

\usepackage{soul}
\soulregister\cite7
\soulregister\gls7
\soulregister\etal7

\usepackage[acronym]{glossaries}
\usepackage{color}

\newacronym{co2}{CO$_2$}{carbon dioxide}
\newcommand{\etal}{\textit{et al.}}
\makeglossaries

\begin{document}

\hl{Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.}
\st{Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.}
    
    
    \begin{thebibliography}{9}
        \bibitem{latexcompanion} 
        Michel Goossens, Frank Mittelbach, and Alexander Samarin. 
        \textit{The \LaTeX\ Companion}. 
        Addison-Wesley, Reading, Massachusetts, 1993.
    \end{thebibliography}
    
\end{document}

caja de colores

Con algunos trucos, puedes crear un entorno de resaltado personalizado con tcolorboxel trabajo, que cambia el color de fondo de una sección precisa que posiblemente contenga figuras, texto, etc. Usando un tcolorboxentorno con todos los márgenes configurados en 0y luego restaurando \parindent, básicamente deberías obtener el texto. como estaría fuera de la caja. Además, al usar el floatpaquete y especificar la Hopción de ubicación, puede incluir entornos flotantes como tableo figuredentro, aunque en realidad no flotarán. Lo usé ulemen el MWE para tachar.

El siguiente MWE contiene una figura y una tabla, así como un salto de página.

\documentclass{article}

\usepackage{mwe}

\usepackage[acronym]{glossaries}
\usepackage{color}

\usepackage{float}
\usepackage[normalem]{ulem}

\newlength\defaultparindent
\AtBeginDocument{\setlength\defaultparindent{\parindent}}

\usepackage[breakable]{tcolorbox}
\newenvironment{highlighttcb}%
  {\begin{tcolorbox}[colback=yellow,
                     colframe=white,
                     boxsep=0pt,
                     left=0pt,
                     right=0pt,
                     top=0pt,
                     bottom=0pt,
                     center, 
                     valign=top, 
                     before skip=0pt, 
                     after skip=0pt,
                     width=\textwidth,
                     breakable,
                     boxrule=0pt,
                     frame empty,
                     sharp corners
                 ]
             \setlength{\parindent}{\defaultparindent}
             }%
  {\end{tcolorbox}}


\newacronym{co2}{CO$_2$}{carbon dioxide}
\newcommand{\etal}{\textit{et al.}}
\makeglossaries

\begin{document}
    \blindtext
    \blindtext
    \blindtext
    \blindtext
    \blindtext

\begin{highlighttcb}%
    Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.

    \sout{Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.}

    \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 tcolorbox.}
    \end{figure}

    \blindtext
    \blindtext
    \blindtext
    \blindtext
    \begin{table}[H]
        \centering
        \begin{tabular}{lcr}
        a & b & c \\
        a & b & c \\
        a & b & c \\
        \end{tabular}
        \caption{This is a table caption within tcolorbox.}
    \end{table}
    \blindtext

\end{highlighttcb}

\begin{thebibliography}{9}
    \bibitem{latexcompanion} 
    Michel Goossens, Frank Mittelbach, and Alexander Samarin. 
    \textit{The \LaTeX\ Companion}. 
    Addison-Wesley, Reading, Massachusetts, 1993.
\end{thebibliography}
    
\end{document}

entorno de resaltado personalizado basado en tcolorbox

color de página / página posterior

Finalmente, un enfoque interesante es colorear parcialmente el fondo de la página usando los paquetes colory afterpage(tomado dehttps://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. Una posible desventaja (dependiendo de su propósito) puede ser que el resaltado también incluirá los márgenes izquierdo y derecho. Además, si tiene elementos flotantes dentro de su entorno de resaltado y flotan fuera de él, no se resaltarán.

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

\documentclass{article}

\usepackage{mwe}

\usepackage[acronym]{glossaries}
\usepackage{color}

\usepackage[normalem]{ulem}
\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{yellow}}%
  {\changepagecolor{white}}


\newacronym{co2}{CO$_2$}{carbon dioxide}
\newcommand{\etal}{\textit{et al.}}
\makeglossaries

\begin{document}
\blindtext
\blindtext
\blindtext
\blindtext

\begin{highlight}
Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.

\sout{Lorem ipsum \gls{co2} dolor by Toto \etal{}\cite{latexcompanion} sit amet, consectetur adipiscing elit.  Etiam tortor sapien, rutrum vitae lacinia sit amet, mollis ac est. Aenean tortor orci \gls{co2}.}

\blindtext

\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

\begin{thebibliography}{9}
    \bibitem{latexcompanion} 
    Michel Goossens, Frank Mittelbach, and Alexander Samarin. 
    \textit{The \LaTeX\ Companion}. 
    Addison-Wesley, Reading, Massachusetts, 1993.
\end{thebibliography}
    
\end{document}

resaltado usando color de página/página posterior

Respuesta2

Una alternativa es utilizar elproofreadpaquete y el \hilitecomando. Sin embargo, debes usar el comando \protectantes \glsy cerrar las llaves inmediatamente después \gls. Luego utilícelo \hilitenuevamente para resaltar el resto del texto.

\documentclass{article}
\usepackage{soulutf8} % Only necessary if there are accented characters inside the curly braces
\usepackage{proofread}
\usepackage[xindy]{glossaries}
\makeglossaries
    
\newglossaryentry{euismod}{
        name={euismod},
        description={euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo.}
    }
    
    
\begin{document}
                
    Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, \hilite{accumsan eleifend.
        
    Nam dui ligula, fringilla a, \protect\gls{euismod}}\hilite{ sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo}. Nam lacus libero, pretium at. 
                
\printglossary  

\end{document}

información relacionada