Alternative zum Seelenpaket?

Alternative zum Seelenpaket?

Kontext

Man möchte vielleicht Text hervorheben oder durchstreichen. Dies kann entweder mit dem soulPaket oder mit dem ulemPaketmit 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 souldem \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, ulemum das zu erreichen, was Sie möchten. Es gibt auch einen Trick, um es zum soulLaufen 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 mdframedoder 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, tcolorboxdas zumindest für einfachen Inhalt funktioniert. Außerdem habe ich einen alternativen Ansatz hinzugefügt, der verwendet wird, afterpageum den Seitenhintergrund zu ändern.

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 wird Ihr MWE problemlos kompiliert. (Schauen Sie sich mal anhttps://tex.stackexchange.com/a/254337/223749für mögliche Probleme). Mit dem soutBefehl von ulemkönnen Sie den gleichen Text auch im MWE ohne Fehler durchstreichen.

Vollständiges MWE (in Ihrem 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 bei bleiben möchten soul, können Sie Ihre Probleme auch mit \soulregisterder 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 tcolorboxUmgebung 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 floatPakets und Angabe der HPlatzierungsoption Float-Umgebungen wie tableoder figureinnerhalb einschließen – obwohl diese nicht wirklich schweben. Ich habe ulemim 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}

benutzerdefinierte Hervorhebungsumgebung basierend auf tcolorbox

Seitenfarbe / Nachseite

Ein interessanter Ansatz besteht schließlich darin, den Seitenhintergrund teilweise einzufärben, indem man die Pakete colorund afterpageverwendet (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}

Hervorhebung mit Pagecolor/Afterpage

Antwort2

Eine Alternative besteht in der Verwendung vonproofreadPaket und \hiliteBefehl. Sie müssen jedoch den Befehl \protectvor verwenden \glsund die Klammern direkt danach schließen \gls. Verwenden Sie dann \hiliteerneut, 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}

verwandte Informationen