![Alternative zum Seelenpaket?](https://rvso.com/image/420054/Alternative%20zum%20Seelenpaket%3F.png)
Kontext
Man möchte vielleicht Text hervorheben oder durchstreichen. Dies kann entweder mit dem soul
Paket oder mit dem ulem
Paketmit einem Trick, 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. Im Grunde genommen können Sie nicht einfach Ihren gesamten Text nehmen und ihn mit einem umgeben, \hl{}
wie es besprochen wurde.anderswo. Und umgehen Sie es \mbox{\gls{toto}}
oder führen Sie einfach {\gls{toto}}
den Trick aus.
Sehen Sie sich beispielsweise das folgende minimal funktionierende Beispiel an:
\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}
Das Kompilieren funktioniert einwandfrei, 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 wie folgt behoben werden:
[...]
\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}}.}
[...]
was fehlschlägt, wenn ich das erste \mbox{\gls{co2}}
in den \hl{}
Befehl einschließe. Vielleicht ist es zu lang?
Fragen
- Was genauIstdas Problem zwischen
soul
dem\hl{}
Befehl und den\cite{}
,\etal{}
bzw. Glossareinträgen? - Wie können diese Probleme gelöst werden? (Die vorgeschlagenen Lösungen funktionieren nur teilweise)
- Gibt es eine Alternative, die etwas wie „
\hl{}
aber“ ermöglicht, das 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 mir eingefallen ist, ist die Verwendung einer Farbbox (siehe auchHier), so was:
[...]
\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 ...
Update vom Juni 2023
Wenn Sie LuaLaTeX zur Kompilierung verwenden, können Sie Ihrer Präambel einfach Folgendes hinzufügen:
\usepackage{luacolor}
\usepackage[soul]{lua-ul}
und dann \hl{Lorem ipsum...}
normal verwenden, wie beschriebenHier\enquote
. Diese Methode hat im Gegensatz zu einigen der folgenden Lösungen den Vorteil, dass sie robust gegenüber ist .
Antwort1
Ich denke , Sie können das Paket verwenden, ulem
um das zu erreichen, was Sie möchten. Es gibt auch einen Trick, um es zum soul
Laufen zu bringen.
EDIT: Was Ihre zweite Frage betrifft, ob es eine einfache Möglichkeit gibt, die Hintergrundfarbe eines bestimmten 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 einbetten (wie mdframed
oder tcolorbox
), aber dies kann Ihre Formatierung beeinträchtigen und auch bestimmte Befehle/Elemente darin einschränken, insbesondere Floats. Ich habe unten ein Beispiel beigefügt, tcolorbox
das zumindest für einfachen Inhalt funktioniert. Außerdem habe ich einen alternativen Ansatz hinzugefügt, der verwendet wird, afterpage
um den Seitenhintergrund zu ändern.
ulem
Definieren Sie Ihren eigenen hl
Befehl 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 wird Ihr MWE problemlos kompiliert. (Schauen Sie sich mal anhttps://tex.stackexchange.com/a/254337/223749für mögliche Probleme). Mit dem sout
Befehl von ulem
können Sie den gleichen Text auch im MWE ohne Fehler durchstreichen.
Vollständiges MWE (in Ihrem MWE fehlte ein \makeglossaries
Befehl):
\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 bei bleiben möchten soul
, können Sie Ihre Probleme auch mit \soulregister
der folgenden Antwort umgehen (https://tex.stackexchange.com/a/139500/223749). Dies bietet auch die Möglichkeit zum Durchstreichen.
Vollständiges 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}
Abonnieren
Mit ein paar Tricks können Sie eine benutzerdefinierte Hervorhebungsumgebung erstellen tcolorbox
, die die Hintergrundfarbe eines bestimmten Abschnitts ändert, der möglicherweise Abbildungen, Text usw. enthält. Wenn Sie eine tcolorbox
Umgebung verwenden, in der alle Ränder auf eingestellt sind 0
, und dann wiederherstellen \parindent
, sollten Sie den Text im Grunde so erhalten, wie er außerhalb des Felds wäre. Darüber hinaus können Sie durch Verwendung des float
Pakets und Angabe der H
Platzierungsoption Float-Umgebungen wie table
oder figure
innerhalb einschließen – obwohl diese nicht wirklich schweben. Ich habe ulem
im MWE für Durchgestrichen verwendet.
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 / Nachseite
Ein interessanter Ansatz besteht schließlich darin, den Seitenhintergrund teilweise einzufärben, indem man die Pakete color
und afterpage
verwendet (entnommen aushttps://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 (je nach Verwendungszweck) kann sein, dass die Hervorhebung auch die linken und rechten Ränder umfasst. Auch wenn Sie Floats innerhalb Ihrer Hervorhebungsumgebung haben und diese aus dieser herausschweben, werden sie nicht hervorgehoben.
Vollständiges MWE, einschließlich Abbildung und Seitenumbruch:
\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}
Antwort2
Eine Alternative besteht in der Verwendung vonproofread
Paket und \hilite
Befehl. Sie müssen jedoch den Befehl \protect
vor verwenden \gls
und die Klammern direkt danach schließen \gls
. Verwenden Sie dann \hilite
erneut, 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}