Contexto
Es posible que desee resaltar algún texto o tacharlo. Esto se puede hacer con el soul
paquete o con el ulem
paquete .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
soul
el\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
ulem
Supongo que puedes usar el paquete para lograr lo que quieres. También hay un truco para que soul
funcione.
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 mdframed
o 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 tcolorbox
el siguiente que funciona al menos para contenido simple. Además, agregué un enfoque alternativo que utiliza afterpage
para cambiar el fondo de la página.
ulem
Defina su propio hl
comando 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 sout
comando de ulem
usted también puede tachar el mismo texto en el MWE sin errores.
MWE completo (a su MWE le faltaba un \makeglossaries
comando):
\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 \soulregister
siguiendo 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 tcolorbox
el trabajo, que cambia el color de fondo de una sección precisa que posiblemente contenga figuras, texto, etc. Usando un tcolorbox
entorno con todos los márgenes configurados en 0
y luego restaurando \parindent
, básicamente deberías obtener el texto. como estaría fuera de la caja. Además, al usar el float
paquete y especificar la H
opción de ubicación, puede incluir entornos flotantes como table
o figure
dentro, aunque en realidad no flotarán. Lo usé ulem
en 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}
color de página / página posterior
Finalmente, un enfoque interesante es colorear parcialmente el fondo de la página usando los paquetes color
y 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}
Respuesta2
Una alternativa es utilizar elproofread
paquete y el \hilite
comando. Sin embargo, debes usar el comando \protect
antes \gls
y cerrar las llaves inmediatamente después \gls
. Luego utilícelo \hilite
nuevamente 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}