Anzeige:
Ergebnis 1 bis 5 von 5

Thema: If-Abfrage in Latex

  1. #1
    Registrierter Benutzer
    Registriert seit
    07.07.2006
    Beiträge
    25

    If-Abfrage in Latex

    Hallo,

    hab das Forum grad erst gefunden. Vielleicht kann mir ja jemand helfen...?

    Ich versuche in LaTeX eine if-Abfrage zu bauen. Undzwar würde ich gerne, je nachdem ob "oneside" oder "twoside" eingestellt ist, unterschiedliche Befehle verwenden...

    hier mal mein Kopf:

    Code:
    \documentclass[
      a4paper,
      12pt,
      chapterprefix,
      pdftex,
      pointlessnumbers,
      oneside,
    %  twoside,
      halfparskip,
    ]{scrreprt}
    nun würde ich gerne sowas in der Art einbauen

    Code:
    if (oneside) {
    ...
    }
    else if (twoside) {
    ...
    }
    Hab das leider nur bisher nicht hinbekommen... Hat jemand da eine Idee wie das geht???

    Besten Dank!

    - Server

  2. #2
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von Server
    nun würde ich gerne sowas in der Art einbauen

    Code:
    if (oneside) {
    ...
    }
    else if (twoside) {
    ...
    }
    Hab das leider nur bisher nicht hinbekommen... Hat jemand da eine Idee wie das geht???
    Code:
    \documentclass[
    %  oneside,
      twoside,
    ]{scrreprt}
    \begin{document}
    
    \makeatletter
    \if@twoside Zweiseitig \else Einseitig \fi 
    \makeatother
    
    \end{document}
    rc

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.07.2006
    Beiträge
    25
    Hallo,

    danke für die schnelle Antwort!

    Auf den ersten Blick funktioniert das sehr schön. Doch leider irgendwie nicht 100%ig. Bei oneside klappt alles wie es soll.

    Nach der document definition kommt dies heir:
    Code:
    %% Bedingte Ausgabe -> Anfang
    \makeatletter
    \if@twoside %% Für Doppelseitig
    	\fancyhead[EL]{\leftmark}	% gerade Seiten, links
    	\fancyhead[ER]{\thepage}	% gerade Seiten, rechts
    	\fancyhead[OL]{\thepage}	% ungerade Seiten, links
    	\fancyhead[OR]{\rightmark}	% ungerade Seiten, rechts
    \else %% Für Einseitig
    	\fancyhead[OL]{\leftmark}	% gerade Seiten, rechts
    	\fancyhead[OR]{\thepage}	% gerade Seiten, links
    \fi 
    \makeatother
    %% Bedingte Ausgabe -> Ende
    und noch später überschreibe ich die Kopf- und Fusszeilen des layouts "plain"
    Code:
    %% Kopf- und Fusszeilenlayout für Seitenstyle "plain" überschreiben
    	\fancypagestyle{plain}{
    		\renewcommand\headrulewidth{0.0pt}
    
    		%% Bedingte Ausgabe -> Anfang
    		\makeatletter
    		\if@twoside %% Für Doppelseitig
    			\fancyhead[OL]{}	% ungerade Seiten, links
    			\fancyhead[OR]{}	% ungerade Seiten, rechts
    			\fancyhead[EL]{}	% gerade Seiten, links
    			\fancyhead[ER]{}	% gerade Seiten, rechts
    		\else %% Für Einseitig
    			\fancyhead[OL]{}	% ungerade Seiten, links
    			\fancyhead[OR]{}	% ungerade Seiten, rechts
    		\fi 
    		\makeatother
    		%% Bedingte Ausgabe -> Ende
    	}
    %%%
    Das funktioniert alles wunderbar. Bis auf, bei "twoside" wird im "plain" syle weder die if Anweisung noch die else Anweisung aufgerufen... Bei "oneside" funktioniert es im "plain" style... Was hab ich da falsch gemacht? Kann ich die Abfrage nur ein mal machen? Oder ist es wegen dem fancypagestyle{plain}???

    Vielen Vielen Dank!!!
    - Server

  4. #4
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von Server
    und noch später überschreibe ich die Kopf- und Fusszeilen des layouts "plain"
    Code:
    %% Kopf- und Fusszeilenlayout für Seitenstyle "plain" überschreiben
    	\fancypagestyle{plain}{
    		\renewcommand\headrulewidth{0.0pt}
    
    		%% Bedingte Ausgabe -> Anfang
    		\makeatletter
    		\if@twoside %% Für Doppelseitig
    			\fancyhead[OL]{}	% ungerade Seiten, links
    			\fancyhead[OR]{}	% ungerade Seiten, rechts
    			\fancyhead[EL]{}	% gerade Seiten, links
    			\fancyhead[ER]{}	% gerade Seiten, rechts
    		\else %% Für Einseitig
    			\fancyhead[OL]{}	% ungerade Seiten, links
    			\fancyhead[OR]{}	% ungerade Seiten, rechts
    		\fi 
    		\makeatother
    		%% Bedingte Ausgabe -> Ende
    	}
    %%%
    Das funktioniert alles wunderbar. Bis auf, bei "twoside" wird im "plain" syle weder die if Anweisung noch die else Anweisung aufgerufen... Bei "oneside" funktioniert es im "plain" style... Was hab ich da falsch gemacht? Kann ich die Abfrage nur ein mal machen? Oder ist es wegen dem fancypagestyle{plain}???
    Code:
    \makeatletter
    \if@twoside %% Für Doppelseitig
    	\fancypagestyle{plain}{%
    		\renewcommand\headrulewidth{0.0pt}
    			\fancyhead[OL]{}	% ungerade Seiten, links
    			\fancyhead[OR]{}	% ungerade Seiten, rechts
    			\fancyhead[EL]{}	% gerade Seiten, links
    			\fancyhead[ER]{}	% gerade Seiten, rechts
           }
    \else  %% Für Einseitig
    	\fancypagestyle{plain}{%
    			\fancyhead[OL]{}	% ungerade Seiten, links
    			\fancyhead[OR]{}	% ungerade Seiten, rechts
           }
    \fi
    \makeatother
    rc

  5. #5
    Registrierter Benutzer
    Registriert seit
    07.07.2006
    Beiträge
    25
    Besten Dank!
    Funktioniert...

    Dann kann ich ja nun erst einmal weiter machen...
    Klasse hier!

    - Server

Lesezeichen

Berechtigungen

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