Etoolbox: Textfarbe & Absatzgrösse Thema ist als GELÖST markiert

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


brisi
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Di 7. Nov 2017, 09:40

Etoolbox: Textfarbe & Absatzgrösse

Beitrag von brisi »

Geschätzte Forums-Leser:innen,

ich nutze für das Verfassen meiner Prüfungen Etoolbox. Da ich wahrscheinlich eher in die Kategorie «Anfänger» gehöre, habe ich Mühe die Einstellungen nach meinen Wünschen anzupassen. Vielleicht könnt Ihr mir da weiterhelfen?
Ich würde gerne den Lösungstext in Rot (Textfarbe rot) und mit einem grösseren Abstand als jetzt (\par) zum Aufgabentext darstellen.
Vielen herzlichen Dank für Eure Hilfe!

\documentclass[11pt,pagesize, DIV=11]{scrartcl}% Alternativen: siehe Text oben
\usepackage[ngerman]{babel}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{marginnote}

% %%%%%%%%%%% Aufgaben oder L\"osungen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \usepackage[Aufgabe]{optional}%Aufgaben
\usepackage[Loesung]{optional}%L\"osungen
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{etoolbox}
\makeatletter
\patchcmd{\opt}
         {\@firstofone}
         {\begingroup \csname #1init\endcsname\expandafter\opt@firstofone}
         {\typeout{Patch erfolgreich!}}
         {\typeout{Patch misslungen!}}
\newcommand{\opt@firstofone}[1]{#1\endgroup}
% L\"osungen sollen in \rmfamily gesetzt werden. Sie sind ebenfalls eigene
% Abs\"atze:
\newcommand\Loesunginit{%
\par\sffamily\aftergroup\par%
}
% Aufgaben sollen immer einen neuen Absatz erzeugen. Am Ende ist ebenfalls ein
% neuer Absatz
\newcommand\Aufgabeninit{%
  \par\aftergroup\par%
}
% Der Standardfall f\"ur Aufgaben sind einige Zeilen Platz zum Ausf\"ullen:
\newcommand\AufgabenLinien[1][1]{% Als optionales Argument kann die Anzahl
                                % der Linien \"ubergeben werden. Voreingestellt
                                % ist nur eine Linie. F\"ur zwei Linien w\"urde
                                % man im Text also beispielsweise
                                %    \AufgabenLinien[2]
                                % schreiben.
  \opt{Aufgabe}{%
    \par
    \setlength{\parskip}{0pt}% Kein Einzig
    \setlength{\parindent}{2pt}% Zus\"atzlicher Abstand
    \setlength{\parfillskip}{0em plus 1fil}% letzte Zeile bis auf 2em voll
    \@tempcnta=0\relax
    \@whilenum \@tempcnta<#1\relax\do{%
      \rule{0pt}{20pt}% unsichtbare St\"utze f\"ur gen\"ugend Platz
      \hrulefill% komplette Zeile mit einer Linie ausf\"ullen
      % Alternative:
      %   \rule{\dimexpr \linewidth-2\parindent\relax}{.4pt}
      \par
      \advance\@tempcnta by 1\relax
    }%
  }
}
% Und dann noch eine Anweisung, um die Punkte darzustellen:
\newcommand{\Punkte}[1]{\marginpar{\fbox{\textbf{#1\,Pt.}}}}
% Und f\"ur den Aufgabentext
\newcommand{\Aufgabe}[2][1]{\emph{#2}\Punkte{#1}}
% Und eine, um die Summe zu bilden.
\newcommand{\Pt}[1]{\marginpar{\fbox{\textbf{#1\,Pt.}}}}
\makeatother

\begin{document}

\Aufgabe[1.0]{Aufgabetext}
\opt{Aufgabe}{\AufgabenLinien[2]}
\opt{Loesung}{Die L\"osung bevorzugt in einer Farbe, z.B. rot und in einem gr\"osseren Abstand zum Aufgabetext.}

\end{document}


Grummelgast

Re: Etoolbox: Textfarbe & Absatzgrösse

Beitrag von Grummelgast »

brisi hat geschrieben:
Mo 16. Aug 2021, 09:33

ich nutze für das Verfassen meiner Prüfungen Etoolbox.

Du verwendest etoolbox nicht Etoolbox. Außerdem verwendest du es nur, um die Standard-Funktion von optional abzuändern. Das eigentliche Paket, das du verwendest ist also optional.

brisi hat geschrieben:
Mo 16. Aug 2021, 09:33

Ich würde gerne den Lösungstext in Rot (Textfarbe rot) und mit einem grösseren Abstand als jetzt (\par) zum Aufgabentext darstellen.

Farbe geht mit xcolor (oder auch mit color). Abstand geht mit \vspace. Die Anweisung ist in jeder ausführlichen LaTeX-Einführung zu finden.

Ich will mich jetzt nicht dazu auslassen, dass und warum ich die Patcherei eher suboptimal finde, und auch nicht diskutieren, ob es nicht besser wäre, spezielle Pakete wie xsim zu verwenden. Stattdessen habe ich deinen Patch einfach einmal weitgehend unbesehen übernommen und die Anweisungen für Farbe und Abstand ergänzt. Die eingefügte und die geänderte Zeile habe ich entsprechend markiert, so dass du das hoffentlich einfach findest. Die konkret gewünschten Abstände und Farben setzt du bitte selbst ein.

\documentclass[11pt,pagesize, DIV=11]{scrartcl}% HINWEIS: 11pt und pagesize sind Voreinstellung und daher überflüssig.
\usepackage[ngerman]{babel}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{marginnote}% Hinweis: Zu diesem Paket gibt es keinen Support mehr.

% %%%%%%%%%%% Aufgaben oder L\"osungen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \usepackage[Aufgabe]{optional}%Aufgaben
\usepackage[Loesung]{optional}%L\"osungen
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{xcolor}% ERGÄNZT
\usepackage{etoolbox}% Hinweis: Ich ziehe normalerweise xpatch vor.
\makeatletter
\patchcmd{\opt}
         {\@firstofone}
         {\begingroup \csname #1init\endcsname\expandafter\opt@firstofone}
         {\typeout{Patch erfolgreich!}}
         {\typeout{Patch misslungen!}}
\newcommand{\opt@firstofone}[1]{#1\endgroup}
% L\"osungen sollen in \rmfamily gesetzt werden. Sie sind ebenfalls eigene
% Abs\"atze:
\newcommand\Loesunginit{%
\par\vspace{2cm}\sffamily\color{red}\aftergroup\par% GEÄNDERT
}
% Aufgaben sollen immer einen neuen Absatz erzeugen. Am Ende ist ebenfalls ein
% neuer Absatz
\newcommand\Aufgabeninit{%
  \par\aftergroup\par%
}
% Der Standardfall f\"ur Aufgaben sind einige Zeilen Platz zum Ausf\"ullen:
\newcommand*\AufgabenLinien[1][1]{% Als optionales Argument kann die Anzahl
                                % der Linien \"ubergeben werden. Voreingestellt
                                % ist nur eine Linie. F\"ur zwei Linien w\"urde
                                % man im Text also beispielsweise
                                %    \AufgabenLinien[2]
                                % schreiben.
  \opt{Aufgabe}{%
    \par
    \setlength{\parskip}{0pt}% Kein Einzig
    \setlength{\parindent}{2pt}% Zus\"atzlicher Abstand
    \setlength{\parfillskip}{0em plus 1fil}% letzte Zeile bis auf 2em voll
    \@tempcnta=0\relax
    \@whilenum \@tempcnta<#1\relax\do{%
      \rule{0pt}{20pt}% unsichtbare St\"utze f\"ur gen\"ugend Platz
      \hrulefill% komplette Zeile mit einer Linie ausf\"ullen
      % Alternative:
      %   \rule{\dimexpr \linewidth-2\parindent\relax}{.4pt}
      \par
      \advance\@tempcnta by 1\relax
    }%
  }
}
% Und dann noch eine Anweisung, um die Punkte darzustellen:
\newcommand*{\Punkte}[1]{\marginpar{\fbox{\textbf{#1\,Pt.}}}}
% Und f\"ur den Aufgabentext
\newcommand{\Aufgabe}[2][1]{\emph{#2}\Punkte{#1}}
% Und eine, um die Summe zu bilden.
\newcommand{\Pt}[1]{\marginpar{\fbox{\textbf{#1\,Pt.}}}}
\makeatother

\begin{document}

\Aufgabe[1.0]{Aufgabetext}
\opt{Aufgabe}{\AufgabenLinien[2]}
\opt{Loesung}{Die L\"osung bevorzugt in einer Farbe, z.B. rot und in einem gr\"osseren Abstand zum Aufgabetext.}

\end{document}

Ergänzend sei angemerkt, dass ich mir die Qualität des Codes zwar nicht näher angeschaut habe. aber es im Zeitalter von UTF8-Kodierung weder notwendig noch zweckmäßig ist beispielsweise gr\"osseren statt größeren zu schreiben.


brisi
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Di 7. Nov 2017, 09:40

Re: Etoolbox: Textfarbe & Absatzgrösse

Beitrag von brisi »

@ Grummelgast

Vielen herzlichen Dank für Deine Hilfe!
Auch wenn es vielleicht blöde tönt, aber Rückmeldungen wie Deine Helfen mir sehr viel weiter.
Ich werde mir das xsim anschauen -- Danke für den Tipp!


Grummelgast

Re: Etoolbox: Textfarbe & Absatzgrösse

Beitrag von Grummelgast »

brisi hat geschrieben:
Mo 16. Aug 2021, 11:20

Auch wenn es vielleicht blöde tönt, aber Rückmeldungen wie Deine Helfen mir sehr viel weiter.

Das klingt überhaupt nicht blöde. Wenn ich nicht die Hoffnung hätte, dass es bei irgend jemandem auch einmal etwas nützt, dann würde ich mir die ganze Mühe einfach sparen.


Antworten