Alternative zum Seelenpaket?
Kontext
Möglicherweise möchten Sie Text hervorheben oder streichen. Dies kann entweder mit dem soulPaket oder mit dem ulemPaket unter Verwendung eines Tricks erfolgen , obwohl es nicht so gut funktioniert.
Problem
Das Problem, das ich mit soul habe, ist, dass es sich bei Glossaren, neuen Befehlen oder Zitaten nicht gut verhält. Grundsätzlich können Sie einfach nicht Ihren gesamten Text nehmen und ihn mit einem umgeben, \hl{}wie es an anderer Stelle besprochen wurde . Und Workaround mit \mbox{\gls{toto}}oder einfach {\gls{toto}}nur den Trick machen.
Siehe zum Beispiel das folgende minimale Arbeitsbeispiel:
\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}
was gut kompiliert während:
[...]
\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}.}
[...]
gibt eine Reihe von Fehlermeldungen aus, die teilweise behoben wurden durch:
[...]
\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}}.}
[...]
Das schlägt fehl, wenn ich den ersten \mbox{\gls{co2}}in den \hl{}Befehl einbinde. Vielleicht ist es zu lang?
Fragen
- Was genau ist das Problem zwischen
soul‚s -\hl{}Befehl und den\cite{},\etal{}oder Glossareinträgen? - Wie können diese Probleme gelöst werden? (Die vorgeschlagenen Lösungen funktionieren nur teilweise)
- Gibt es eine Alternative, die so etwas zulässt,
\hl{}aber einen ganzen Codeblock umgeben kann, der möglicherweise Zahlen, Text usw. enthält? Mit anderen Worten, gibt es eine einfache Möglichkeit, die Hintergrundfarbe eines bestimmten Abschnitts zu ändern?
Das Beste, was ich mir ausgedacht habe, ist die Verwendung eines Farbfelds (siehe auch hier ) wie folgt :
[...]
\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}
[...]
Aber es ändert die Textformatierung ...
Antworten
Sie können das ulemPaket verwenden, um das zu erreichen, was Sie wollen, denke ich. Es gibt auch einen Trick, um soulArbeit zu machen .
BEARBEITEN: Bei Ihrer zweiten Frage, ob es eine einfache Möglichkeit gibt, die Hintergrundfarbe eines präzisen Abschnitts zu ändern, der möglicherweise Abbildungen, Text usw. enthält, ist dies nicht so einfach. Sie können Ansätze verwenden, die Ihren Inhalt in eine andere Umgebung einschließen (wie mdframedoder tcolorbox). Dies kann sich jedoch auf Ihre Formatierung auswirken und auch bestimmte Befehle / Elemente im Inneren einschränken, insbesondere Floats. Ich habe tcolorboxunten ein Beispiel eingefügt, das zumindest für einfache Inhalte funktioniert. Außerdem habe ich einen alternativen Ansatz hinzugefügt, mit afterpagedem der Seitenhintergrund geändert wird.
ulem
Definieren Sie Ihren eigenen hlBefehl wie folgt (cmp.https://tex.stackexchange.com/a/48549/223749):
\usepackage[normalem]{ulem}
\newcommand\hl{\bgroup\markoverwith
{\textcolor{yellow}{\rule[-.5ex]{.1pt}{2.5ex}}}\ULon}
Damit kompiliert Ihr MWE einwandfrei. (Schau es dir anhttps://tex.stackexchange.com/a/254337/223749für mögliche Probleme). Mit dem soutBefehl von können ulemSie auch denselben Text in der MWE fehlerfrei durchstreichen.
Vollständige MWE (Ihrer MWE fehlte ein \makeglossariesBefehl):
\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}
Seele
Wenn Sie dabei bleiben möchten soul, gibt es auch eine Problemumgehung für Ihre Probleme, indem Sie \soulregisterdieser Antwort folgen (https://tex.stackexchange.com/a/139500/223749). Dies bietet auch eine Durchstreichungsmöglichkeit.
Volle MWE:
\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
Mit einigen Tricks können Sie mit der tcolorboxArbeit eine benutzerdefinierte Hervorhebungsumgebung erstellen , die die Hintergrundfarbe eines präzisen Abschnitts ändert, der möglicherweise Abbildungen, Text usw. enthält. Wenn Sie eine tcolorboxUmgebung verwenden, in der alle Ränder eingestellt sind 0, und diese dann wiederherstellen \parindent, sollten Sie den Text grundsätzlich erhalten wie es außerhalb der Box wäre. Wenn Sie das floatPaket verwenden und die HPlatzierungsoption angeben, können Sie außerdem Float-Umgebungen wie tableoder figureinnerhalb einschließen - obwohl diese nicht tatsächlich schweben. Ich habe ulemin der MWE durchgestrichen.
Das folgende MWE enthält eine Abbildung und eine Tabelle sowie einen Seitenumbruch.
\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}
Seitenfarbe / Afterpage
Schließlich besteht ein interessanter Ansatz darin, den Seitenhintergrund mit den Paketen colorund afterpage(aus) teilweise einzufärbenhttps://tex.stackexchange.com/a/237427/223749). Dies hat den Vorteil, dass Sie Ihren Inhalt überhaupt nicht ändern müssen und die Formatierung nicht beeinträchtigt wird. Ein möglicher Nachteil (abhängig von Ihrem Zweck) kann sein, dass die Hervorhebung auch den linken und rechten Rand umfasst. Wenn Sie Floats in Ihrer Hervorhebungsumgebung haben und diese aus dieser heraus schweben, werden sie nicht hervorgehoben.
Vollständige MWE, einschließlich einer Abbildung und eines Seitenumbruchs:
\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}
Eine Alternative ist die Verwendung des Pakets "Korrekturlesen" und des Befehls "\ hilite". Sie müssen jedoch den Befehl "\ protec" vor "\ gls" verwenden und die geschweiften Klammern direkt nach "\ gls {}" schließen. Verwenden Sie dann erneut "\ hilite", um den Rest des Textes hervorzuheben.
\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}