PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Textfarbe nach Umgebung zurücksetzen



ActronAB
01-05-2013, 05:00
Hallo!

Ich möchte in einer eigenen Umgebung die Textfarbe vorübergehend ändern. Klappt mit \color{} auch wunderbar. Laut mehrerer Aussagen im Internet gilt die Farbe nur bis zum Ende einer Gruppe oder Umgebung. Komischerweise ist bei mir aber auch der Text nach der pole-Umgebung noch in der neu gesetzten Farbe.

Nun habe ich mir gedacht, ich setze die Farbe am Ende der Umgebung einfach wieder zurück. Funktioniert auch so, wie es in meinem Code steht. Nun setze ich aber hart immer auf "black" zurück. Lieber wäre mir ein "setze zurück auf die Farbe, die der Text vor der Umgebung" hatte.

Mit xcolor geht das wohl, aber ich nutze noch das normale color und kann auch nicht umsteigen.

Meine Frage also:
- Kann ich mit color (nicht xcolor) die aktuelle Textfarbe vor der Umgebung speichern und nach der Umgebung wieder setzen? Wenn ja, wie?
- Oder gibt es eine Art "Variable", in der LaTeX die Standardtextfarbe mitführt? Muss ja vielleicht nicht immer "black" sein!?


\newenvironment{pole}
{
\def\FrameCommand##1{\textcolor{flagpole}{\vrule width 3pt} \hspace{10pt}##1}
\MakeFramed {\advance\hsize-\width \FrameRestore}
\color{flagpole} % Hinweistext in grau
}
{
\color{black} % Farbe zuruecksetzen <-- WIE GESTALTE ICH DAS DYNAMISCH?
\vspace{0.2cm} % Strich nach unten weiterziehen
\endMakeFramed
}

cu
Bernd

rstuby
01-05-2013, 07:09
Hatten wir gerade: http://www.mrunix.de/forums/showthread.php?t=75038

Darüber hinaus würde ich \color{schwarz} schlicht durch \normalcolor ersetzen.

ActronAB
01-05-2013, 08:43
Ah, okay. Mit dem richtigen Stichwort findet man auch den Manual-Eintrag:


\normalcolor switches to the colour that was active at the end of the preamble. Thus placing a \color command in the preamble can change the standard colour for the whole document. This is the equivalent to \normalfont for font selection.

Спаси́бо! :)

klops
01-05-2013, 10:28
Das Problem hat damit zu tun, wie framed den Inhalt der Umgebung verarbeitet. Es lässt sich aber leicht dadurch lösen, dass man eine zusätzliche Gruppe einfügt:

\documentclass{article}
\usepackage{framed,color}

\newenvironment{pole}
{
\def\FrameCommand##1{\textcolor{blue}{\vrule width 3pt} \hspace{10pt}##1}
\MakeFramed {\advance\hsize-\width \FrameRestore}
\begingroup
\color{blue} % Hinweistext in grau
}
{
\endgroup
\vspace{0.2cm} % Strich nach unten weiterziehen
\endMakeFramed
}

\usepackage{blindtext}

\begin{document}

\blindtext

\begin{pole}
\blindtext
\end{pole}

\blindtext

\end{document}
Und nächstes Mal wirfst Du uns bitte nicht einen Codezipfel wie einem Hund den Wurstzipfel vor, sondern machst ein vollständiges Minimalbeispiel (http://www.mrunix.de/forums/showthread.php?t=66921). Du bist lange genug dabei, um das zu wissen.

ActronAB
01-05-2013, 12:05
Auch eine schöne Lösung.

Tnx

mechanicus
01-05-2013, 17:21
Oder ein fertiges Paket nehmen, was auch mehr erlaubt:


\documentclass{article}
\usepackage[]{mdframed}
\usepackage{lipsum}
\mdfsetup{fontcolor=red}
\begin{document}
\begin{mdframed}
\lipsum
\end{mdframed}
\lipsum
\end{document}