Dies ist der Befehl texexpand, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
texexpand – \input- und \include-Anweisungen in einer TeX-Datei erweitern
BESCHREIBUNG
Allgemeiner Übersetzungsmechanismus:
Das Hauptprogramm latex2html ruft texexpand mit dem Dokumentnamen auf, um einige zu erweitern
seiner \input- und \include-Anweisungen, hier auch „Zusammenführen“ genannt, und zum Schreiben einer Liste davon
Sensibilisierte Stil-, Klassen-, Eingabe- oder Include-Dateinamen. Wenn texexpand fertig ist, alle
ist in einer Datei enthalten, TMP_foo. (Angenommen, foo.tex ist der Name des Dokuments
übersetzen).
In dieser Version kümmert sich texexpand um folgende Umgebungen, die sich über Include-Dateien /
Abschnittsgrenzen: a) \begin{comment} b) %begin{comment} c) \begin{any} eingeleitet mit
\excludecomment d) %begin{any} e) \begin{verbatim} f) \begin{latexonly} g)
%begin{latexonly}
e) – g) verhindern, dass texexpand Eingabedateien erweitert, der Umgebungsinhalt jedoch gelöscht wird
vollständig in die Ausgabedatei übernommen.
Zusammen mit jeder Zusammenführung von \input usw. gibt es sogenannte %%%texexpand-Marker
die Grenze begleitend.
Wenn latex2html die Ausgabedatei einliest, verwendet es diese Markierungen, um jeden Teil in eine zu schreiben
separate Datei speichern und weiterverarbeiten.
Detailliert technisch :
1. %begin{latexonly} und %end{latexonly} müssen in einer separaten Zeile stehen. Alles dazwischen
Diese Tags (einschließlich der Tags) werden verworfen.
2. \begin{latexonly} und \end{latexonly} müssen in einer separaten Zeile stehen. Alles dazwischen
Diese Tags (einschließlich der Tags) werden nicht erweitert.
3. [%\]begin{"toexclude"} und [%\]end{"toexclude"} müssen in einer separaten Zeile stehen.
Alles zwischen diesen Tags (einschließlich der Tags) wird verworfen.
4. \begin{verbatim/verbatim*} und \end{verbatim/verbatim*} müssen in einer separaten Zeile stehen.
Alles zwischen diesen Tags (einschließlich der Tags) wird nicht erweitert.
5. Der Geltungsbereich solcher Tags kann sich über mehrere Dateien erstrecken. Das Eröffnungs-Tag für
latexonly kann auf einer anderen Include-Ebene als das schließende Tag auftreten. Das Eröffnungs-Tag
for verbatim/"toexclude" muss in derselben Datei vorkommen wie das schließende Tag.
6. Warnungen werden gedruckt, wenn das Dokument analysiert wurde und offene Tags verbleiben.
7. In einer „Ausschließen“-/Verbatim-Umgebung erkennt texexpand KEINEN Befehl
außer dem entsprechenden schließenden Tag. Es dürfen keine verschachtelten Konstruktionen vorhanden sein. Das
Das Verhalten ist identisch mit dem von LaTeX.
8. \begin{latexonly},\end{latexonly} können verschachtelt sein, wobei
%begin{latexonly}, %end{latexonly} dürfen nicht verschachtelt sein.
9. Ein „%“-Tag kann ein „\“-Tag nicht schließen und umgekehrt.
10. Jedes \Dokument(class|style), \usepackage, \input und \include-Befehl müssen auf a sein
separate Zeile.
11. Alles hinter einem „%“, dem kein „\“ vorangestellt ist, gilt als Kommentar, also als Kommentar
wird gedruckt, aber nicht interpretiert.
12. Wenn einem der in 10. aufgeführten Befehle ein Vorkommen von „\verb“ oder „\latex“ vorangestellt ist, dann
es wird NICHT interpretiert. Dies stürzt bei Zeilen wie dieser ab: bla bla \verb+foo foo+
\input{bar} % bar wird nicht geladen!
13. Pakete, die über \usepackage bereitgestellt werden, werden auf die gleiche Weise behandelt wie „Optionen“ in
\Dokument(class|style), d. h. sie werden in das Paket eingeschlossen, wenn -auto_exclude deaktiviert ist
ist nicht in @dont_include *ODER* das Paket ist in @do_include (neu). Sie werden dem hinzugefügt
style-Datei zusammen mit ihren Optionen, wenn die Datei selbst nicht zusammengeführt wurde.
\documentclass[options]{class} sucht nach jeder option.clo,
\documentstyle[options]{style} sucht nach jeder option.sty.
\usepackage[options]{packages} sucht nach jedem package.sty.
14. Jedes texinputs-Verzeichnis wird nach Eingabedateien/-stilen durchsucht. Wenn es mit „//“ endet, wird die
Der gesamte Unterverzeichnisbaum wird durchsucht.
15. \input / \include führt die angegebene Datei zusammen (sofern sie unter dem angegebenen Namen oder mit .tex gefunden wird).
Erweiterung), wenn sein Basisname in @do_include ist oder wenn er nicht in @dont_include ist oder wenn die
Der angegebene Dateiname endet nicht auf .sty/.clo/.cls, wenn -auto_exclude festgelegt ist.
Notizen
Erkennt \documentclass, \documentstyle, \usepackage, \RequirePackage,
\begin{verbatim}...\end{verbatim}, %begin{latexonly}...%end{latexonly},
\begin{latexonly}...\end{latexonly}, \input, \include, \verb, \latex \endinput,
\end{document} \includecomment, \excludecomment \begin{"ausschließen"}, \end{"ausschließen"}
%begin{"zum Ausschließen"}, %end{"zum Ausschließen"}
Die blutig Details
Fügen Sie eine Datei ein und analysieren Sie sie. Diese Routine ist rekursiv, siehe auch
&process_input_include_file, &process_document_header und &process_package_cmd.
Zwei globale Flags steuern die Zustände von texexpand.
o $active ist wahr, wenn wir die Zeilen interpretieren sollen, um Dateien zu erweitern, nach Paketen zu suchen,
usw.
o $mute ist wahr, wenn wir verhindern sollen, dass die Zeilen in die Ausgabedatei gelangen.
Wir haben drei allgemeine Zustände von texexpand:
1) Interpretieren Sie die Zeilen und übergeben Sie sie an die Ausgabedatei. Dies ist der Normalfall.
Entsprechend: $active true, $mute false
2) Minimal interpretieren und unterdrücken
Dies ist beim Parsen innerhalb einer Kommentarumgebung der Fall
würde auch seinen Körper von LaTeX behalten. => $active falsch, $mute wahr
3) Interpretiere minimal und übergebe die Zeilen an die Ausgabedatei
Dies geschieht in einer Verbatim- oder Latexonly-Umgebung.
Die Zeile muss natürlich zumindest interpretiert werden, um das schließende Tag zu bestimmen.
=> $active falsch, $mute falsch
Jede Umgebung kann sich über mehrere Include-Dateien erstrecken. Jede Umgebung außer wörtlich
und latexonly kann sein öffnendes oder schließendes Tag auf verschiedenen Eingabeebenen haben. Der Kommentar
und Verbatim-Umgebungen können nicht verschachtelt werden, wie dies bei LaTeX der Fall ist. Wir müssen zumindest analysieren
Verbatim-/Kommentarumgebungen in Latexonly-Umgebungen, um gefälschte Latexonly-Tags abzufangen.
Das Arbeitsschema: Fünf Funktionen beeinflussen das Verhalten von texexpand. o &process_file öffnet die
gegebene Datei und analysiert den Nicht-Kommentar-Teil, um $active und $mute festzulegen (siehe oben).
Es ruft &interprete auf, um den Nicht-Kommentar-Inhalt zu interpretieren, und fährt entweder mit dem fort
nächste Zeile seiner Datei oder beendet sich, wenn &interprete das \end{document} oder ein erkannt hat
\endinput.
o &interprete behandelt einige LaTeX-Tags in Bezug auf die drei von gesteuerten Zustände
$aktiv und $stumm. Bezüglich \input|include, \Dokument(Klasse|Stil) und
\(verwenden|erforderlich)packen Sie die Funktionen &process_input_include_file, &process_document_header,
und &process_package_cmd werden jeweils aufgerufen.
o Diese drei Funktionen prüfen, ob der Dateiname oder die Optionsdateien aktiviert oder deaktiviert sind
Zusammenführen (über TEXE_DO_INCLUDE oder TEXE_DONT_INCLUDE). Jede Datei, die eingeschlossen werden soll, wird sein
in die aktuelle Datei 'zusammengeführt', dh an dieser Stelle wird die Funktion &process_file aufgerufen
in der Zeit (rekursiv). Dadurch wird die Interpretation in der aktuellen Zeile in der Datei gestoppt und gestartet
mit der neuen zu verarbeitenden Datei und fährt mit der nächsten Zeile fort, sobald die neue Datei verfügbar ist
bis zum Ende interpretiert.
Der Aufrufbaum (noweb+xy.sty wäre hier praktisch):
Haupt-
|
v
+->process_file
| |
| v
| interprete (in Bezug auf die aktuelle Zeile eine dieser drei)
| | | |
| vvv
| Process_Input_Include_File Process_Document_Header Process_Package_cmd
| | | |
| vvv
+----+---------------------------+---------------- --------+
Fehler: o Da die Latexonly-Umgebung nicht geparst wird, können deren Inhalte eingeführt werden
Umgebungen, die nicht erkannt werden.
o Das schließende Tag für latexonly wird nicht gefunden, wenn es in einer Eingabedatei versteckt ist.
o Noch ein Umgebungs-Tag pro Zeile!
o Wenn ich Testfälle für dieses Biest entwerfen müsste, würde ich sofort desintegrieren
in eine Logikwolke.
Anmerkungen:
o Ok, ich habe Testfälle dafür entworfen. Weitere Informationen finden Sie unter „Test erweitern“ des Regressionstests
Suite im Entwicklermodul des l2h-Repositorys.
o -Unsegment-Funktion: In diesem (seltenen) Fall möchte der Benutzer eine segmentierte Datei übersetzen
Dokument nicht in Segmenten, sondern als Ganzes (zum Beispiel zum Testen). Wir ermöglichen dies durch Erkennen
den Befehl \segment in &interprete, wodurch die Segmentdatei wie \input behandelt wird
aber die ersten Zeilen vor \startdocument (incl.) gehen verloren, wie über gesteuert
$segmentfile. Wie Sie ein Dokument segmentieren, erfahren Sie am besten im Abschnitt „Dokument“.
Segmentierung“ des LaTeX2HTML-Handbuchs.
VORSICHTEN
Dieses Dienstprogramm wird automatisch für die Arbeit mit dem lokalen Setup konfiguriert und erstellt. Wenn dies
Setup-Änderungen (z. B. einige der externen Befehle werden verschoben) muss das Skript geändert werden
neu konfiguriert.
Autoren
Basierend auf texexpand von Robert Thau, MIT AI Lab, einschließlich Modifikationen von
Franz Vojik[E-Mail geschützt] >
Nikos Drakos[E-Mail geschützt] >
Sebastian Rahtz[E-Mail geschützt] >
Maximilian Ott[E-Mail geschützt] >
Martin Boyer
Herbert Schwan
Jens Lippmann
Nutzen Sie texexpand online über die Dienste von onworks.net
