„Extra \fi“-Fehler beim Definieren sich gegenseitig ausschließender Paketoptionen mit Bedingungen

„Extra \fi“-Fehler beim Definieren sich gegenseitig ausschließender Paketoptionen mit Bedingungen

Ich habe versucht, ein Paket zu erstellen, das das babelPaket lädt und die Sprache mit einer Option einstellt. Ich habe seltsame Fehler erhalten, wenn ich versucht habe, gegenseitig ausschließende Paketoptionen zu definieren, um babelOptionskonflikte zu vermeiden. Ich habe eine zusammengestellt MWE. Hier ist die failedpackage.styDatei:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{failedpackage}

\newif\ifbabel@french
\newif\ifbabel@english
\newif\ifbabel@german

%% Option zone
\DeclareOption{french}{\babel@frenchtrue\babel@englishfalse\babel@germanfalse}
\DeclareOption{english}{\babel@frenchfalse\babel@englishtrue\babel@germanfalse}
\DeclareOption{german}{\babel@frenchfalse\babel@englishfalse\babel@germantrue}

\ExecuteOptions{french}

\ProcessOptions
%% end of Option zone


\ifbabel@frenchtrue
    \RequirePackage[french]{babel}
\fi
\ifbabel@englishtrue
    \RequirePackage[english]{babel}
\fi
\ifbabel@germantrue
    \RequirePackage[german]{babel}
\fi


\endinput

Hier ist die .texzu kompilierende Datei:

\documentclass[report]

\usepackage[T1]{fontenc}
\usepackage[UTF8]{inputenc}

\usepackage{failedpackage}

\begin{document}

    Bonjour TeX.StackExchange !

\end{document}

Und hier ist das .log-Dokument:http://paf.im/8a8tc

Nun, ich vermute, das Problem wird dadurch verursacht, dass der Compiler die bedingten Anweisungen (z. B. ) als undefiniert behandelt , obwohl sie gleich zu Beginn des ! \ifbabel@englishtruedefiniert wurden ..sty

Ich verstehe nicht.

Vielen Dank im Voraus für Ihre Hilfe.

Antwort1

  1. Entfernen Sie das Suffix trueaus den \ifbabel@....Abfragen! Sie müssen \ifbabel@frenchetc für die Abfrage verwenden, aber \babel@frenchtrueoder \babel@frenchfalseum den Status der 'Variable' festzulegen.

  2. Ändern\documentclass[report]\documentclass{report}


\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{failedpackage}

\newif\ifbabel@french
\newif\ifbabel@english
\newif\ifbabel@german

%% Option zone
\DeclareOption{french}{\babel@frenchtrue\babel@englishfalse\babel@germanfalse}
\DeclareOption{english}{\babel@frenchfalse\babel@englishtrue\babel@germanfalse}
\DeclareOption{german}{\babel@frenchfalse\babel@englishfalse\babel@germantrue}

\ExecuteOptions{french}

\ProcessOptions
%% end of Option zone


\ifbabel@french
\RequirePackage[french]{babel}
\fi

\ifbabel@english
\RequirePackage[english]{babel}
\fi
\ifbabel@german
\RequirePackage[german]{babel}
\fi


\endinput

Main.tex

\documentclass{report}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}     %

\usepackage{failedpackage}

\begin{document}

Bonjour TeX.StackExchange !

\end{document}

verwandte Informationen