Anzeige:
Ergebnis 1 bis 8 von 8

Thema: if-Anweisung zur Überprüfung eines String-Werts

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.06.2008
    Beiträge
    23

    if-Anweisung zur Überprüfung eines String-Werts

    Ich habe folgendes Problem:

    Mittels
    Code:
    \newcommand{\reihe}{gelb}
    habe ich mir eine „quasi-Varibale“ geschaffen, die ich an vielen Stellen brauche und die ich in anderen Dokumenten gegen blau, rot oder grün austausche, je nach dem, in welcher Reihe mein Buch erscheint.
    Für die blaue und gelbe Reihe habe ich ein Nachwort als tex-Datei (gelb_nachwort.tex und blau_nachwort.tex) welche ich mit \input einbinde. Jetzt möchte natürlich, dass in Abhängigkeit der „Variable“ \reihe die richtige Datei ausgewählt wird.
    Code:
    \input{\reihe_nachwort.tex}
    allein hilft nicht weiter, weil im Fall von rot und grün kein Nachwort angefügt werden soll. Ich brauche also eine if-Anweisung, die ich aber nicht hinkriege. Ich stelle mir das so vor:
    Code:
    if  \reihe = gelb oder blau
    		then
    			\input{\reihe_nachwort.tex}
    		
    		% Wenn rot oder grün
    		Else 
    			nichts machen
    Hat jemand eine Idee?

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von dielix Beitrag anzeigen
    Mittels
    Code:
    \newcommand{\reihe}{gelb}
    habe ich mir eine „quasi-Varibale“ geschaffen, die ich an vielen Stellen brauche und die ich in anderen Dokumenten gegen blau, rot oder grün austausche, je nach dem, in welcher Reihe mein Buch erscheint.
    Für die blaue und gelbe Reihe habe ich ein Nachwort als tex-Datei (gelb_nachwort.tex und blau_nachwort.tex) welche ich mit \input einbinde. Jetzt möchte natürlich, dass in Abhängigkeit der „Variable“ \reihe die richtige Datei ausgewählt wird.
    Code:
    \input{\reihe_nachwort.tex}
    allein hilft nicht weiter, weil im Fall von rot und grün kein Nachwort angefügt werden soll. Ich brauche also eine if-Anweisung, die ich aber nicht hinkriege. Ich stelle mir das so vor:
    Code:
    if  \reihe = gelb oder blau
    		then
    			\input{\reihe_nachwort.tex}
    		
    		% Wenn rot oder grün
    		Else 
    			nichts machen
    Hat jemand eine Idee?
    Code:
    \def\gelb{gelb}\def\blau{blau}
    \def\rot{rot}\def\gruen{gruen}
    ...
    \ifx\reihe\rot\else\ifx\reihe\gruen\else\input{\reihe_nachwort}\fi\fi
    Herbert

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.06.2008
    Beiträge
    23
    Perfekt! Vielen Dank!

    Kennst Du eine wirklich gute deutsche Anleitung für den Umgang mit If-Anweisungen in LaTeX? Ich habe wirklich viele zu Hause und dazu noch ne Menge online gelesen. Aber in keiner ist das wirklich gut erklärt.

  4. #4
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von dielix Beitrag anzeigen
    Kennst Du eine wirklich gute deutsche Anleitung für den Umgang mit If-Anweisungen in LaTeX? Ich habe wirklich viele zu Hause und dazu noch ne Menge online gelesen. Aber in keiner ist das wirklich gut erklärt.
    Da muss man schon das TeXbook nehmen oder die freien
    Books and articles:
    http://texnik.dante.de/cgi-bin/mainFAQ.cgi?file=docs

    Herbert

  5. #5
    Registrierter Benutzer
    Registriert seit
    26.06.2008
    Beiträge
    23
    Da hab ich auch schon die nächste Frage. Hab mich anhand Deiner Abfrage mal ein bißchen durch die Materie gewurschtelt und wollte gleich das nächste Problem lösen, was - Überraschung !!! - nicht so recht geklappt hat.

    Ich habe wieder eine "Variable" angelegt:
    Code:
    \newcommand{\widmung}{Für Mama und Papa}
    Wenn also in Widmung Inhalt ist, soll eine neue Seite angelegt und die Widmung dort ausgegeben werden.
    Wenn die \widmung leer ist, also so
    Code:
    \newcommand{\widmung}{}
    soll nichts passieren.
    Ich habs mal so probiert:
    \
    Code:
    def\empty{}              % Vergleichsmakro mit leeren Inhalt
    	\def\widmungeinfuegen#1
    		{\def\test{#1}      % Makro, dessen Inhalt gleich #1 ist
              	\ifx\test\empty	% Anweisungen, falls #1 unbesetzt ist
                                nichts machen
    			 \else  	 	% Anweisungen, falls #1 nicht unbesetzt ist
    			    \cleardoublepage
                                 \pagestyle{empty}%
                                 \parskip0ex
                                 \begin{center}
                                 \vspace{2em}
                                 \widmung
             	          \fi}
    	\widmungeinfuegen{\widmung}
    Geht aber nicht. Gibts einen einfacheren Weg?

  6. #6
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von dielix Beitrag anzeigen
    Da hab ich auch schon die nächste Frage. Hab mich anhand Deiner Abfrage mal ein bißchen durch die Materie gewurschtelt und wollte gleich das nächste Problem lösen, was - Überraschung !!! - nicht so recht geklappt hat.

    Ich habe wieder eine "Variable" angelegt:
    Code:
    \newcommand{\widmung}{Für Mama und Papa}
    Wenn also in Widmung Inhalt ist, soll eine neue Seite angelegt und die Widmung dort ausgegeben werden.
    Wenn die \widmung leer ist, also so
    Code:
    \newcommand{\widmung}{}
    soll nichts passieren.

    Geht aber nicht. Gibts einen einfacheren Weg?
    das nächste mal sagst du genau _was_ nicht geht und gibst vor allem
    _komplette_ Beispiele an!

    Herbert

    Code:
    \documentclass[11pt,a4paper,ngerman]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[ngerman]{babel}
    \newcommand\widmung{Für Opa und Oma}
    \makeatletter
    \newcommand\widmungeinfuegen[1]{%
      \edef\w@test{#1}      % Makro, dessen Inhalt gleich #1 ist
      \ifx\w@test\@empty	% Anweisungen, falls #1 unbesetzt ist nichts machen
      \else  	 	% Anweisungen, falls #1 nicht unbesetzt ist
         \cleardoublepage
         \vspace*{2em}
         \pagestyle{empty}
         \begin{center}
         \widmung
         \end{center}
         \clearpage
       \fi}
    \makeatother
    
    \begin{document}
    
    \widmungeinfuegen{\widmung}
    \renewcommand\widmung{}
    foo
    \widmungeinfuegen{\widmung}
    bar
    \end{document}

  7. #7
    Registrierter Benutzer
    Registriert seit
    26.06.2008
    Beiträge
    23
    Vielen lieben Dank! Es funktioniert perfekt.

    Für die unvollständigen Angaben entschuldige ich mich und verspreche Besserung. Es leuchtet ein, das Hilfe ohne genaue Fehlerbeschreibung und mit unvollständigen Listings nicht gerade Freude bereitet.

    Nochmals Danke und Grüße

    dielix.

  8. #8
    Registrierter Benutzer
    Registriert seit
    10.04.2005
    Ort
    Hannover
    Beiträge
    1.854
    Zitat Zitat von dielix Beitrag anzeigen
    Perfekt! Vielen Dank!

    Kennst Du eine wirklich gute deutsche Anleitung für den Umgang mit If-Anweisungen in LaTeX? Ich habe wirklich viele zu Hause und dazu noch ne Menge online gelesen. Aber in keiner ist das wirklich gut erklärt.
    Ich habe mal versucht ein paar Programmieranweisungen für LaTeX kurz zusammenzufassen:
    http://www.matthiaspospiech.de/blog/...und-schleifen/
    (Für Verbesserungsvorschläge / Korrekturen dankbar)

    Matthias

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •