Hallo,

ich habe jetzt kein passendes Minimalbeispiel zur Hand, aber im Grunde gehts eigentlich nur um folgende Schleife:

Open in writeLaTeX
\newwrite\outfile

\newcounter{ct}

\forloop{ct}{1}{\value{ct} < 27}
    {\IfFileExists{./anhang/\Alph{ct}.tex}
    {\anhang{./anhang/\Alph{ct}}}
    {\typeout{Die Datei \Alph{ct}.tex ist nicht Vorhanden}}
    }

Durch diese Schleife füge ich einzelne Dateien in ein Dokument, ohne jedes Mal einen \include-Befehl zu setzen. Dabei liegen die Dateien in einen bestimmten Ordner und werden mit Großbuchstaben des Alphabets benannt wie z.B. A, B, C, usw. Jetzt möchte ich aber nicht, dass die Dateien alle nur einen Buchstaben haben, sondern eventuell noch mehr aussagen wie z.B. A-Funktionsanalyse.

Vorher hatte ich die Dateien einzelnen includiert. Aber um mir die ganzen Befehle zu sparen, habe ich diese Schleife angewendet. So muss ich mir nur immer eine neue tex-Datei erstellen mit einem weiteren Buchstaben.

Jemand eine Idee?

gefragt 12 Dez '14, 10:57

Giovario's gravatar image

Giovario
3301819
Akzeptiert: 88%

bearbeitet 13 Dez '14, 04:51

Clemens's gravatar image

Clemens
19.0k112960

Eine Möglichkeit wäre sicher pythontex zu verwenden, ähnlich wie hier: http://texwelt.de/wissen/fragen/9344/wie-kann-ich-sehr-viele-tex-dateien-einlesen

(12 Dez '14, 11:19) feynman

Falls es für Dich ein gangbarer Weg ist, ein Makro zu definieren, das alle Dateinamen enthält, kannst Du mit den Listenmakros von etoolbox relativ einfach etwas in folgender Richtung machen:

Open in writeLaTeX
\documentclass{article}
\usepackage{etoolbox}

% Liste, die Dateinamen enthält:
\newcommand*\dateiliste{}
\forcsvlist{\listadd\dateiliste}{Mario,Lukas,Johann}

% Makro, das Dateinamen als Argument erhält, und damit etwas macht:
\newcommand*\verarbeitedatei[1]{Binde Datei `#1.tex' ein\ldots\par}

\begin{document}

\forlistloop{\verarbeitedatei}{\dateiliste}

\end{document}

alt text

Permanenter link

beantwortet 13 Dez '14, 04:49

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 13 Dez '14, 09:24

Das mit expl3 definierte \inputloop kann zwei Sachen:

  • Es kann Namen in einer Schleife konstruieren: \inputloop{test0}[1-10] wird die Dateien test01.tex, test02.tex, usw. bis test010.tex einbinden.
  • Mit \inputloop{test01.tex,test05.tex} werden test01.tex und test05.tex eingebunden. Enthält der Dateiname ein Komma muss man natürlich \inputloop{test01.tex,{file,with,comma.tex},test05.tex} machen.

Open in writeLaTeX
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn

\cs_new_protected:Npn \giovario_inputfile:n #1
 {
  \file_if_exist:nTF { #1 }
  {
   \msg_term:n { Inputting ~ #1 }
   \file_input:n { #1 }
  }
  {
   \msg_term:n { File ~ #1 ~ not ~ found! }
  }
 }

\cs_new_protected:Npn \giovario_intloop:nww #1#2-#3\scan_stop:
 {
  \int_step_inline:nnnn { #2 } { 1 } { #3 }
   {
    \giovario_inputfile:n { #1 ##1 .tex }
   }
 }

\cs_new_protected:Npn \giovario_fileloop:n #1
 {
  \clist_map_inline:nn { #1 }
   {
    \giovario_inputfile:n { ##1 }
   }
 }

\NewDocumentCommand \inputloop { m o }
 {
  \IfNoValueTF { #2 }
   {
    \giovario_fileloop:n { #1 }
   }
   {
    \giovario_intloop:nww { #1 } #2 \scan_stop:
   }
 }

\ExplSyntaxOff
\begin{document}
\inputloop{test0}[1-10]

\inputloop{test01.tex,test05.tex}
\end{document}
Permanenter link

beantwortet 14 Dez '14, 16:51

Henri's gravatar image

Henri
10.0k31730

bearbeitet 15 Dez '14, 04:22

\giovario_intloop:nn hat nur ein n dafür aber zwei w Argumente und sollte daher \giovario_intloop:nww heißen :)

(14 Dez '14, 18:12) Clemens

@Clemens Sehr richtig, vielen Dank. Leider gibt es keine Warnung wenn man die Signatur falsch hat.

(15 Dez '14, 04:25) Henri

@Henri stimmt. Meinem Gefühl nach wäre übrigens das Quark \q_stop ein passenderer Begrenzer als \scan_stop:, auch wenn das von der Funktionalität keinen Vorteil bringt.

(15 Dez '14, 18:35) Clemens

@Clemens Ich hab das mal nachgeschlagen und interface3.pdf sagt zu Scan Marks wie \scan_stop: "Like quarks, they can be used as delimiters in weird functions and are often safer to use for this purpose." (Part VII, Section 7: Scan Marks)

(16 Dez '14, 04:30) Henri

@Henri ja klar: wenn es aus Versehen passiert, dass ein Quark expandiert wird, dann landet man in einer Endlosschleife, \scan_stop: ist nur \relax.

(16 Dez '14, 07:45) Clemens
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

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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:

×15
×5

Frage gestellt: 12 Dez '14, 10:57

Frage wurde angeschaut: 2,276 Mal

Zuletzt aktualisiert: 16 Dez '14, 07:45