Alternative au paquet de l'âme?
Le contexte
On peut vouloir mettre en évidence un texte ou le supprimer. Cela peut être fait avec le soulpackage, ou avec le ulempackage en utilisant une astuce , bien que cela ne fonctionne pas très bien.
Problème
Le problème que j'ai avec l'âme est qu'elle ne se comporte pas bien sur les glossaires, les nouvelles commandes ou les citations. Fondamentalement, vous ne pouvez tout simplement pas prendre tout votre texte et l'entourer d'un \hl{}comme cela a été discuté ailleurs . Et solution de contournement avec \mbox{\gls{toto}}ou même simplement {\gls{toto}}faire l'affaire.
Par exemple, consultez l'exemple de travail minimal suivant:
\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}
qui compile bien tandis que:
[...]
\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}.}
[...]
donne un tas de messages d'erreur, partiellement corrigés par:
[...]
\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}}.}
[...]
qui échoue si j'inclus le premier \mbox{\gls{co2}}dans la \hl{}commande. C'est peut-être trop long?
Des questions
- Qu'est - ce exactement est le problème entre
soulde »\hl{}la commande et les\cite{},\etal{}ou les entrées de glossaire? - Comment résoudre ces problèmes? (les solutions proposées ne fonctionnent que partiellement)
- Existe-t-il une alternative permettant quelque chose comme
\hl{}mais qui peut entourer un bloc de code entier, contenant éventuellement des chiffres, du texte, etc. En d'autres termes, existe-t-il un moyen simple de changer la couleur de fond d'une section précise?
Le mieux que j'ai trouvé est d'utiliser une boîte de couleur (voir aussi ici ), comme ceci:
[...]
\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}
[...]
Mais cela change la mise en forme du texte ...
Réponses
Vous pouvez utiliser le ulempackage pour réaliser ce que vous voulez, je suppose. Il y a aussi une astuce pour faire soulfonctionner.
EDIT: Concernant votre deuxième question de savoir s'il existe un moyen simple de changer la couleur de fond d'une section précise contenant éventuellement des chiffres, du texte, etc., ce n'est pas si facile. Vous pouvez utiliser des approches qui enveloppent votre contenu dans un autre environnement (comme mdframedou tcolorbox), mais cela peut affecter votre mise en forme et peut également contraindre certaines commandes / éléments à l'intérieur, en particulier les flottants. J'ai inclus un exemple basé sur tcolorboxci-dessous qui fonctionne au moins pour un contenu simple. En outre, j'ai ajouté une approche alternative qui utilise afterpagepour changer l'arrière-plan de la page.
ulem
Définissez votre propre hlcommande comme ceci (cmp.https://tex.stackexchange.com/a/48549/223749):
\usepackage[normalem]{ulem}
\newcommand\hl{\bgroup\markoverwith
{\textcolor{yellow}{\rule[-.5ex]{.1pt}{2.5ex}}}\ULon}
Avec cela, votre MWE se compile bien. (Jettes un coup d'oeil àhttps://tex.stackexchange.com/a/254337/223749pour d'éventuels problèmes). En utilisant la soutcommande de, ulemvous pouvez également barrer le même texte dans le MWE sans erreur.
MWE complet (votre MWE manquait une \makeglossariescommande):
\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}
âme
Si vous souhaitez vous en tenir à soul, il existe également une solution de contournement pour vos problèmes en \soulregistersuivant cette réponse (https://tex.stackexchange.com/a/139500/223749). Cela offre également une possibilité de suppression.
MWE complet:
\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}
tcolorbox
Avec quelques astuces, vous pouvez créer un environnement de mise en évidence personnalisé avec le tcolorboxtravail, qui change la couleur d'arrière-plan d'une section précise contenant éventuellement des figures, du texte, etc. En utilisant un tcolorboxenvironnement avec toutes les marges définies sur 0, puis en restaurant \parindent, vous devriez essentiellement obtenir le texte comme ce serait en dehors de la boîte. De plus, en utilisant le floatpackage et en spécifiant l' Hoption de placement, vous pouvez inclure des environnements flottants tels que tableou à l' figureintérieur - bien qu'ils ne flottent pas réellement. J'ai utilisé ulemdans le MWE pour barré.
Le MWE suivant contient une figure et un tableau, ainsi qu'un saut de page.
\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}
pagecolor / afterpage
Enfin, une approche intéressante consiste à colorier partiellement l'arrière-plan de la page à l'aide des packages coloretafterpagehttps://tex.stackexchange.com/a/237427/223749). Cela présente l'avantage que vous n'avez pas du tout besoin de modifier votre contenu et le formatage ne sera pas affecté. Un inconvénient possible (en fonction de votre objectif) peut être que la mise en évidence inclura également les marges gauche et droite. De plus, si vous avez des flotteurs à l'intérieur de votre environnement de mise en évidence et qu'ils flottent hors de celui-ci, ils ne seront pas mis en surbrillance.
MWE complet, comprenant une figure et un saut de page:
\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}
Une alternative est d'utiliser le package "relecture" et la commande "\ hilite". Cependant, vous devez utiliser la commande "\ protec" avant "\ gls" et fermer les accolades juste après "\ gls {}". Puis utilisez à nouveau "\ hilite" pour mettre en évidence le reste du texte.
\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}