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, 11:32

Andr%C3%A9's gravatar image

André
97652635
Akzeptiert: 78%

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

(17 Dez '17, 11: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, 02:13

Ijon%20Tichy's gravatar image

Ijon Tichy
6.0k1919

bearbeitet 18 Dez '17, 02:18

Perfekt! Danke!

(18 Dez '17, 11:18) André
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×5
×2

Frage gestellt: 17 Dez '17, 11:32

Frage wurde angeschaut: 260 Mal

Zuletzt aktualisiert: 18 Dez '17, 11:18