Mal erklärt, was da schief läuft: TeX behandelt
\if(true|false) … \else … \fi sehr speziell. Nach
\iffalse wird direkt nach einem
\else oder
\fi (und nach weiteren
\iftrue und
\iffalse gescannt. Anderer Code wird überhaupt nicht beachtet bzw. expandiert und darf deshalb auch in weiten Bereichen fehlerhaft sein. Nun ist bei dir das Ende aber per
\norme festgelegt und das ist nicht
\fi, sondern wird erst durch Expansion zu
\fi. Um das zu beheben, müsste man
\let\norme\fi verwenden.
Allerdings löst das noch nicht alle Probleme, während nämlich:
\iftrue \iffalse … \fi \fi einwandfrei funktioniert, wäre das (mit der oben erwähnten Korrektur) bei
\iftrue \norma … \norme \fi dann noch immer nicht der Fall. Der Grund ist hier, dass
\norma ebenfalls erst durch Expansion zu
\iffalse wird. Da mit der oben erwähnten Änderung
\norme ein
\fi ist, hätte man also ein
\fi zuviel. Also müsste auch
\let\norma\iffalse verwendet werden.
Einfacher wird es mit
\newif:
\documentclass[12pt]{article}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[chars=60, lines=30, hyphen=false]{stdpage} %Normseite
\usepackage[onehalfspacing]{setspace} %Normseite Zeilenabstand
%
\newif\ifstan
\makeatletter
\@ifpackageloaded{stdpage}{\stanfalse}{\stantrue}
\makeatother
\begin{document}
\ifstan
Textelement 1 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 1 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
Fließtext geht weiter, der von beiden Formaten verarbeitet werden kann.
\ifstan
Textelement 2 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 2 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
\end{document}
oder
\newif\ifstan
\stantrue% oder wahlweise \stanfalse
\documentclass[12pt]{article}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\ifstan
\usepackage[chars=60, lines=30, hyphen=false]{stdpage} %Normseite
\fi
\usepackage[onehalfspacing]{setspace} %Normseite Zeilenabstand
\begin{document}
\ifstan
Textelement 1 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 1 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
Fließtext geht weiter, der von beiden Formaten verarbeitet werden kann.
\ifstan
Textelement 2 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 2 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
\end{document}
In der ersten Variante wird durch Auskommentieren des Pakets
stdpage umgeschaltet. In der zweiten Variante durch Wechsel von
\stantrue zu
\stanfalse.
Es sei darauf hingewiesen, dass die Verwendung von
\if… … \else … \fi einige Beschränkungen hat (beispielsweise die erwähnte Schachtelbarkeit, wenn irgendwer in ähnlicher Weise pfuscht wie du, was leider auch in manchen Paketen bzw. Vorlagen zu finden ist). Deshalb gibt es die erwähnten Pakete.
Mal erklärt, was da schief läuft: TeX behandelt [tt]\if(true|false) … \else … \fi[/tt] sehr speziell. Nach [tt]\iffalse[/tt] wird direkt nach einem [tt]\else[/tt] oder [tt]\fi[/tt] (und nach weiteren [tt]\iftrue[/tt] und [tt]\iffalse[/tt] gescannt. Anderer Code wird überhaupt nicht beachtet bzw. expandiert und darf deshalb auch in weiten Bereichen fehlerhaft sein. Nun ist bei dir das Ende aber per [tt]\norme[/tt] festgelegt und das ist nicht [tt]\fi[/tt], sondern wird erst durch Expansion zu [tt]\fi[/tt]. Um das zu beheben, müsste man [tt]\let\norme\fi[/tt] verwenden.
Allerdings löst das noch nicht alle Probleme, während nämlich: [tt]\iftrue \iffalse … \fi \fi[/tt] einwandfrei funktioniert, wäre das (mit der oben erwähnten Korrektur) bei [tt]\iftrue \norma … \norme \fi[/tt] dann noch immer nicht der Fall. Der Grund ist hier, dass [tt]\norma[/tt] ebenfalls erst durch Expansion zu [tt]\iffalse[/tt] wird. Da mit der oben erwähnten Änderung [tt]\norme[/tt] ein [tt]\fi[/tt] ist, hätte man also ein [tt]\fi[/tt] zuviel. Also müsste auch [tt]\let\norma\iffalse[/tt] verwendet werden.
Einfacher wird es mit [tt]\newif[/tt]:
[code]
\documentclass[12pt]{article}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[chars=60, lines=30, hyphen=false]{stdpage} %Normseite
\usepackage[onehalfspacing]{setspace} %Normseite Zeilenabstand
%
\newif\ifstan
\makeatletter
\@ifpackageloaded{stdpage}{\stanfalse}{\stantrue}
\makeatother
\begin{document}
\ifstan
Textelement 1 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 1 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
Fließtext geht weiter, der von beiden Formaten verarbeitet werden kann.
\ifstan
Textelement 2 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 2 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
\end{document}[/code]
oder
[code]\newif\ifstan
\stantrue% oder wahlweise \stanfalse
\documentclass[12pt]{article}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\ifstan
\usepackage[chars=60, lines=30, hyphen=false]{stdpage} %Normseite
\fi
\usepackage[onehalfspacing]{setspace} %Normseite Zeilenabstand
\begin{document}
\ifstan
Textelement 1 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 1 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
Fließtext geht weiter, der von beiden Formaten verarbeitet werden kann.
\ifstan
Textelement 2 in Variante A -- Besonders gestaltetes Textelement, das nur im Standardlayout funktioniert
\else
Textelement 2 in Variante B -- Besonders gestaltetes Element, angepasst an das Layout der Normseite
\fi
\end{document}[/code]
In der ersten Variante wird durch Auskommentieren des Pakets [tt]stdpage[/tt] umgeschaltet. In der zweiten Variante durch Wechsel von [tt]\stantrue[/tt] zu [tt]\stanfalse[/tt].
Es sei darauf hingewiesen, dass die Verwendung von [tt]\if… … \else … \fi[/tt] einige Beschränkungen hat (beispielsweise die erwähnte Schachtelbarkeit, wenn irgendwer in ähnlicher Weise pfuscht wie du, was leider auch in manchen Paketen bzw. Vorlagen zu finden ist). Deshalb gibt es die erwähnten Pakete.