Ich habe meine Präambel in eine Style-Datei (*.sty) ausgelagert. Nun möchte ich aber von meinem Dokument einen dynamischen Wert an die Style-Datei übergeben. In meinem Fall ist es ein Text für die Kopfzeile (für \ohead).

Minimalbeispiel Style-Datei (BadG.sty):

Öffne in Overleaf
\ProvidesPackage{BadG}[2017/11/03 0.1 Paket XY]
\ProcessOptions\relax

\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[ngerman]{babel}

\RequirePackage[automark,
headsepline,ilines]{scrpage2}
\pagestyle{scrheadings}
\ihead{Bericht zum Antrag auf Verhaltenstherapie}
\chead{}
\ohead{Pat.-Chiffre: X123456}
\ifoot{}
\cfoot{}
\ofoot{\pagemark}

Minimalbeispiel Hauptdokument

Öffne in Overleaf
\documentclass[11pt,oneside]{scrartcl}
\usepackage{BadG}

\begin{document}

Ich möchte gern, dass in meinem Dokument nicht "`X123456"' in der Kopfzeile steht, sondern ein Wert, den ich in meinem Hauptdokument festlege.

\end{document}

gefragt 17 Dez '17, 17:32

Andr%C3%A9's gravatar image

André
986232836
Akzeptiert-Rate: 33%

Du kannst ein ungeborenes Kind nicht taufen. Du kannst aber nach der Geburt den Namen problemlos ändern, sofern das Kind existiert.

(17 Dez '17, 17:52) Johannes

Du kannst in dem Paket einfach eine Anweisung nach dem Vorbild von \title etc. aus den Standardklassen definieren:

Öffne in Overleaf
\begin{filecontents}{BadG.sty}
\ProvidesPackage{BadG}[2017/11/03 0.1 Paket XY]
\ProcessOptions\relax

\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[ngerman]{babel}

\RequirePackage[automark,
headsepline,ilines]{scrpage2}
\pagestyle{scrheadings}
\newcommand*{\@patchiffre}{%
  \PackageWarning{BadG}{Pat.-Chiffre undefined}%
  NoN%
}
\newcommand{\patchiffre}[1]{\def\@patchiffre{#1}}
\ihead{Bericht zum Antrag auf Verhaltenstherapie}
\chead{}
\ohead{Pat.-Chiffre: \@patchiffre}
\ifoot{}
\cfoot{}
\ofoot{\pagemark}
\end{filecontents}
\documentclass[11pt,oneside]{scrartcl}
\usepackage{BadG}
\patchiffre{Y78901234}
\begin{document}

Ich möchte gern, dass in meinem Dokument nicht "`X123456"' in der Kopfzeile steht, sondern ein Wert, den ich in meinem Hauptdokument festlege.

\end{document}

Da du offenbar an den Umgang mit \newcommand noch nicht gewohnt bist, sei darauf hingewiesen, dass man bei eigenen Definitionen unbedingt auf unerwünschte Leerzeichen achten sollte! #1 ist übrigens der Platzhalter für das Argument, das an \patchiffre übergeben wird. Es sind max. 9 Argumente möglich. Eine alternative Schnittstelle zum Definieren neuer Anweisungen bietet xparse. Bei dessen Verwendung würde sich allerdings anbieten auch mit Attributen zu arbeiten, wie sie bei l3 üblich sind. Das wiederum ist eher etwas für Leute, die bereits Erfahrung mit TeX auf Low-Level-Ebene haben.

Falls du wissen willst, wie man das ganze als Option für das Paket lösen kann, sei auf Pakete wie scrbase oder kvoptions etc. hingewiesen. Bevor man sich daran macht, sollte man aber die Grundlagen verstanden haben.

Permanenter link

beantwortet 18 Dez '17, 08:13

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 18 Dez '17, 08:18

Perfekt! Danke!

(18 Dez '17, 17:18) André
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×7
×3

gestellte Frage: 17 Dez '17, 17:32

Frage wurde gesehen: 5,047 Mal

zuletzt geändert: 18 Dez '17, 17:18