Ein und Ausblenden von Textzeilen abhängig von Überschrift

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


SAW
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Fr 8. Apr 2016, 14:37

Ein und Ausblenden von Textzeilen abhängig von Überschrift

Beitrag von SAW »

Hallo allerseits,

ich bastel aktuell an einer Überschrift für Arbeitsblätter, derart, dass nach Auswahl gewisser Parameter die Lösungen ein- bzw. ausgeblendet werden.
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
\usepackage{etoolbox}
%\input{../../Praeambel/Praeambel}

\newcommand{\version}{.}
 % Etoolbox  
\providebool{mybool}% erzeugt einen boolschen Wert mit Namen ``Mybool''
\boolfalse{mybool}% gibt ``Mybool'' den Wert ``falsch''

\newcommand{\Blatt}[3]{
  \textbf{
    \ifthenelse{\equal{#1}{1}}{Übung}{
      \ifthenelse{\equal{#1}{2}}{Tutorium}{
        \ifthenelse{\equal{#1}{3}}{Leistungskontrolle}{
          \ifthenelse{\equal{#1}{4}}{Kopfrechnen}{ 
          }
        }
      }
    }
    \;#3\;
  }
  \ifthenelse{\equal{#2}{1}}{Lösung \booltrue{mybool}}{}
}
%---------------------------------------------------------------------------------------------
\begin{document}
\ifbool{mybool}{\textbf{true}}{\textbf{false}}\\ % prüft mybool

\booltrue{mybool}
\ifbool{mybool}{\textbf{true}}{\textbf{false}}\\ 

\boolfalse{mybool}
\ifbool{mybool}{\textbf{true}}{\textbf{false}}\\ % setzt mybool wieder auf falsch
% bis jetzt nur Testlauf, ob der Wert von mybool in der document-Umgebung verändert werden kann.

%---------------------------------------------------------------------------------------------
\Blatt{1}{1}{1} \\% hier kommt es zu einer Fehlermeldung beim Kompilieren. Fehlendes $-Zeichen???
\ifbool{mybool}{\textbf{true}:\;\; \textit{hier soll jetzt die Lösung stehen}}{\textbf{false}}\\
\end{document}
Ich erhalte: false, true, false, true

Leider kommt es beim Kompilieren zu einer Fehlermeldung.
Dies liegt zum anderen am Befehl \booltrue{} innerhalb der Definition von \Blatt[] und dem Ausgeben des 3. Wertes. Weshalb kann ich leider nicht herausfinden.

Weiter ist der Wahrheitswert verloren, sobald sich eine Zeile Abstand zwischen dem Befehl \Blatt{1}{1}{1} und der Auswertung \ifbool befindet.

Siehe unten
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
\usepackage{etoolbox}
%\input{../../Praeambel/Praeambel}

\newcommand{\version}{.}
 % Etoolbox  
\providebool{mybool}% erzeugt einen boolschen Wert mit Namen ``Mybool''
\boolfalse{mybool}% gibt ``Mybool'' den Wert ``falsch''

\newcommand{\Blatt}[3]{
  \textbf{...
    \ifthenelse{\equal{#1}{1}}{Übung}{
      \ifthenelse{\equal{#1}{2}}{Tutorium}{
        \ifthenelse{\equal{#1}{3}}{Leistungskontrolle}{
          \ifthenelse{\equal{#1}{4}}{Kopfrechnen}{ 
          }
        }
      }
    }
    \;#3\;
  }
  \ifthenelse{\equal{#2}{1}}{Lösung \booltrue{mybool}}{}
}
%---------------------------------------------------------------------------------------------
\begin{document}
\ifbool{mybool}{\textbf{true}}{\textbf{false}}\\ % prüft mybool

\booltrue{mybool}
\ifbool{mybool}{\textbf{true}}{\textbf{false}}\\ 

\boolfalse{mybool}
\ifbool{mybool}{\textbf{true}}{\textbf{false}}\\ % setzt mybool wieder auf falsch
% bis jetzt nur Testlauf, ob der Wert von mybool in der document-Umgebung verändert werden kann.

%---------------------------------------------------------------------------------------------
\Blatt{1}{1}{1} % hier kommt es zu einer Fehlermeldung beim Kompilieren. Fehlendes $-Zeichen???

\ifbool{mybool}{\textbf{true}:\;\; \textit{hier soll jetzt die Lösung stehen}}{\textbf{false}}

\end{document}
Ich erhalte : false, true, false, false

Woran kann das liegen?

Stamm

Klasse oder Paket

Beitrag von Stamm »

Schau dir die Klasse »exam« oder das Paket »exercises« an und lies in deren Anleitung.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\; ist ein Befehl, der nur im Mathematikmodus erlaubt sind. Außerdem fehlen bei deinen \ifthenelse-Befehlen die else-Zweige.

Abgesehen davon: Eine Schachtelung von if-else mit 5-Ebenen ist fast immer falsch. Sowas bekommt man anders hin:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\makeatletter
\@namedef{titel1}{Übung}
\@namedef{titel2}{Tutorium}
\makeatother
\newcommand{\Blatt}[1]{\textbf{\csname titel#1\endcsname ...}}
    
%---------------------------------------------------------------------------------------------
\begin{document}
\Blatt{1}, \Blatt{2}
\end{document} 

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Für den Befehl \ifthenelse des Pakets ifthen gibt es laut Abschnitt 3.6.5 der Dokumentation des Pakets etoolbox mehrere Ersatzbefehle.

Antworten