Ich habe versucht, ein Paket zu erstellen, das das babel
Paket 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 babel
Optionskonflikte zu vermeiden. Ich habe eine zusammengestellt MWE
. Hier ist die failedpackage.sty
Datei:
\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 .tex
zu 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@englishtrue
definiert wurden ..sty
Ich verstehe nicht.
Vielen Dank im Voraus für Ihre Hilfe.
Antwort1
Entfernen Sie das Suffix
true
aus den\ifbabel@....
Abfragen! Sie müssen\ifbabel@french
etc für die Abfrage verwenden, aber\babel@frenchtrue
oder\babel@frenchfalse
um den Status der 'Variable' festzulegen.Ä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}