Das Paket Open in Online-Editor
\begin{filecontents}{Testklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{Testklasse} \ProcessOptions\relax \LoadClass{article} \RequirePackage[spanish,ngerman]{babel} \RequirePackage[autostyle]{csquotes} \RequirePackage{setspace} \end{filecontents} \documentclass[doublespacing,spanish=mexican]{Testklasse} \usepackage[T1]{fontenc} \usepackage{blindtext} \begin{document} Doppelter Zeilenabstand funktioniert: \blindtext Spanische Zitate im mexikanischen Stil funktionieren nicht: \foreignquote{spanish}{amigo} \end{document} gefragt 23 Apr '15, 23:28 Cletus |
Während @esdd in ihrem Kommentar bereits eine Lösung angegeben hat, will ich ein wenig die Ursachen beleuchten. Die Ursache dafür, dass die Optionenauswertung von Open in Online-Editor
\DeclareOption{foo}{do} deklariert. Jede Option Bei Open in Online-Editor
\DeclareOption*{do for \CurrentOption} deklariert. Es werden also alle Optionen in irgend einer Form verarbeitet. Aber dieses alle bezieht sich dafür nur noch auf die Optionen, die explizit an das Paket übergeben wurden und nicht mehr auf die Optionen, die als globale Optionen angegeben wurden. Deshalb funktioniert bereits: Open in Online-Editor
\documentclass[doublespacing,spanish=mexican]{article} \usepackage[T1]{fontenc} \usepackage[spanish,ngerman]{babel} \usepackage{setspace} \usepackage{csquotes} \usepackage{blindtext} \begin{document} Doppelter Zeilenabstand funktioniert: \blindtext Spanische Zitate im mexikanischen Stil funktionieren nicht: \foreignquote{spanish}{amigo} \end{document} nicht wie gewünscht, sondern liefert die Warnung: Man müsste nun also explizit dafür sorgen, dass alle globalen Optionen zu denen es (vermutlich) eine Open in Online-Editor
\RequirePackage{filecontents} \begin{filecontents}{Testklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{Testklasse} \ProcessOptions\relax \LoadClass{article} \RequirePackage[spanish,ngerman]{babel} \RequirePackage{keyval} \let\orig@define@key\define@key% Originaldefinition speichern \def\define@key#1#2{% Definition von \define@key ändern \begingroup % Prüfen, ob eine csquote-Option definiert wird: \edef\reserved@a{#1}\def\reserved@b{csq}% \ifx\reserved@a\reserved@b % Prüfen, ob diese Option in den globalen Optionen vorkommt: \edef\reserved@a{#2}% \@for\CurrentOption:=\@classoptionslist\do{% \expandafter\My@KV@split\CurrentOption==\relax \ifx\reserved@a\reserved@b % Option explizit an csquotes übergeben. \PassOptionsToPackage{\CurrentOption}{csquotes}% \fi }% \fi \endgroup \@ifnextchar[{\KV@def{#1}{#2}}{\long\@namedef{KV@#1@#2}####1}} \long\def\My@KV@split#1=#2=#3\relax{% \KV@@sp@def\reserved@b{#1}% } \RequirePackage[autostyle]{csquotes} \let\define@key\orig@define@key% Änderung wieder zurücknehmen \RequirePackage{setspace} \end{filecontents} \documentclass[doublespacing,spanish=mexican]{Testklasse} \usepackage[T1]{fontenc} \usepackage{blindtext} \begin{document} Doppelter Zeilenabstand funktioniert: \blindtext Spanische Zitate im mexikanischen Stil funktionieren nicht: \foreignquote{spanish}{amigo} \end{document} Aber: Das hat auch einen ganz großen Nachteil. Setzt man nun beispielsweise per Wollte man dieses Problem lösen, müsste Da man aber Open in Online-Editor
\begin{filecontents}{Testklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{Testklasse} \ProcessOptions\relax \LoadClass{article} \RequirePackage[spanish,ngerman]{babel} \RequirePackage[autostyle]{csquotes} \RequirePackage{setspace} \end{filecontents} \PassOptionsToPackage{spanish=mexican}{csquotes} \documentclass[doublespacing]{Testklasse} \usepackage[T1]{fontenc} \usepackage{blindtext} \begin{document} Doppelter Zeilenabstand funktioniert: \blindtext Spanische Zitate im mexikanischen Stil funktionieren nicht: \foreignquote{spanish}{amigo} \end{document} Nebenbei erwähnt: Wenn beantwortet 24 Apr '15, 08:35 saputello Danke für die kenntnisreichen Erläuterungen.
(24 Apr '15, 11:19)
Cletus
|
\PassOptionsToPackage{spanish=mexican}{csquotes}\documentclass{Testklasse}
oder\documentclass{Testklasse} \ExecuteQuoteOptions{spanish=mexican}
oder Du definierst Dir eine Option fürTestklasse
, die die Weitergabe der Optionspanish=mexican
an dascsquotes
Paket erledigt, also\PassOptionsToPackage{spanish=mexican}{csquotes}
ausführt.