PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Code mit \input importieren macht Probleme



Tommyboy
05-07-2009, 12:53
Hallo Forum,

ich möchte einen Serienbrief erstellen und möglichst teilweise Code an andere Stellen auslagern, um mehr Übersicht zu gewinnen.

Ich habe eine Datei namens "Anrede.tex" mit dem folgenden Inhalt erstellt:

\newcommand{\Anrede}{}
\renewcommand*{\adrentry}[8]{%
\if #5w \renewcommand{\Anrede}{Frau} \fi
\if #5m \renewcommand{\Anrede}{Herrn} \fi


Wenn ich dieses kleine File mit \input{Anrede} im Hauptdokument aufrufe gibt es einen Fehler: Runaway Argument? File ended while scanning use of \argdef.
Wenn ich den Code direkt in mein Hauptdokument einfüge also ohne input dann funktioniert es?

Könnt Ihr mir weiterhelfen wie ich den Code an anderer Stelle ablegen kann,
ohne das es einen Fehler gibt?

Gruß Tommyboy

vci
05-07-2009, 12:59
Sicher, dass hier keine } fehlt??



\newcommand{\Anrede}{}
\renewcommand*{\adrentry}[8]{%
\if #5w \renewcommand{\Anrede}{Frau} \fi
\if #5m \renewcommand{\Anrede}{Herrn} \fi
} % <---


Ansonsten bitte ein vollständiges Minimalbeispiel erstellen.

Tommyboy
05-07-2009, 16:39
Hallo vci,

also selbst mit der Klammer hat es nicht funktioniert. Ich denke es liegt daran, dass ich Quasi den Befehl Lokal in der Texdatei Anrede abgespeichert habe und die Variable somit auch mit input nicht in der Hauptdatei bekannt ist? Kann das sein?

Hier das Minimalbeispiel normal das funzt bei mir!


\documentclass[DIN]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{mathpazo}

\begin{document}
\newcommand{\Anrede}{}
\renewcommand*{\adrentry}[8]{%
\if #5w \renewcommand{\Anrede}{Frau} \fi
\if #5m \renewcommand{\Anrede}{Herrn} \fi
\begin{letter}{\Anrede\\#2 #1\\#3}
\if #5w \opening{Sehr geehrte Frau #1,} \fi
\if #5m \opening{Sehr geehrter Herr #1,} \fi

Serienbriefe mit \LaTeX{} sind nicht schwer zu realisieren.

\closing{Mit freundlichen Grüßen,}
\end{letter}
}

\input{adressen.adr}
\end{document}


Diesen Codeteil möchte ich in eine seperate Texdatei auslagern namens Anrede:


\newcommand{\Anrede}{}
\renewcommand*{\adrentry}[8]{%
\if #5w \renewcommand{\Anrede}{Frau} \fi
\if #5m \renewcommand{\Anrede}{Herrn} \fi


Jetzt möchte ich den Code mit \input{Anrede} in die Hauptdatei einbinden:


\documentclass[DIN]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{mathpazo}

\begin{document}

\input{Anrede}

\begin{letter}{\Anrede\\#2 #1\\#3}
\if #5w \opening{Sehr geehrte Frau #1,} \fi
\if #5m \opening{Sehr geehrter Herr #1,} \fi

Serienbriefe mit \LaTeX{} sind nicht schwer zu realisieren.

\closing{Mit freundlichen Grüßen,}
\end{letter}
}

\input{adressen.adr}
\end{document}

Mfg
Tommyboy

Stefan_K
05-07-2009, 20:25
Hallo,

Du lagerst nur einen Teil des Makros \adrentry aus, das wird im Hauptteil fortgesetzt, so gibt's wohl Probleme. Wenn Du nur innere Zeilen auslagerst, wird es übersetzbar, also etwa

\if #5w \renewcommand{\Anrede}{Frau} \fi
\if #5m \renewcommand{\Anrede}{Herrn} \fi
in die separate Datei, nicht ein Makro bzw. eine Gruppe in der externen Datei öffnen, sie aber nicht dort schließen sondern erst in der Hauptdatei.

Viele Grüße,

Stefan


--
TeXblog (http://texblog.net)