Am 03.09.22 um 10:32 schrieb Friedrich Vosberg:
> Warum eigentlich haben die Quelltextdateien von LaTeX-Dokumenten
> das Suffix .tex und nicht das gängige Suffix von Text-Dateien .txt?
Ich fasse diese Frage nicht als Kritik sondern als Interesse daran
auf, wie Gepflogenheiten im Lauf der Zeit entstehen.
Dass bei Quelltextdateien von LaTeX-Dokumenten die Dateinamen oft die
Extension ".tex" haben ist nur bei Dateisystemen so, bei denen
Dateinamen eine Dateinamenserweiterung, auch "Extension" genannt,
haben.
Zu den Zeiten, zu denen Donald E. Knuth TeX entwickelt hat und
Leslie Lamport den LaTeX-Kern, war das nicht bei allen Computern
selbstverständlich. Unter anderem deshalb kann man bei TeX/LaTeX
technisch gesehen nahezu beliebige Dateinamen und
Dateinamenserweiterungen verwenden, sofern das zum Abspeichern
verwendete Dateisystem und die zum Abspeichern verwendeten
Routinen mitmachen.
Ein paar Namen würden vom Dateisystem her gehen, gehen aber bei der
Eingabe an der Shell/Konsole/Kommandozeile von der verwendeten Shell
her nicht, weil die Shell die Zeichen nicht als Teil des Dateinamens
sondern anders interpretiert.
Zum Beispiel verbietet der ISO 9669:1999-Standard, der bei CDRFS-Datei-
systemen von CD-ROM Anwendung findet, keine Sternchen (*) und keine
Anführungszeichen (") bzw (') in Dateinamen, aber versuche zB mal
an einem alten MS-DOS-Rechner, zB MS-DOS 5.0, eine Datei über
command.com zu öffnen, deren Name Sternchen enthält, oder versuche
an einer Shell nach POSIX-Standard eine Datei zu öffnen, deren
Name aus sich abwechselnden einfachen und doppelten Anführungszeichen
besteht. ;-)
Ein paar weitere Namen würden vom Dateisystem und der Shell her
gehen, gehen aber bei Web2C-Implementatierungen von TeX nicht, weil
sie von den Kpathsea-Routinen fürs Verarbeiten von Dateipfaden anders
verarbeitet werden.
Die Sache mit den Dateinamenserweiterungen sollte ursprünglich ein
Indikator dafür sein, was für Daten eine Datei enthält und nach welchen
Konventionen die Nullen und Einsen, aus denen sie besteht, angeordnet
sind.
Es gibt ja nicht nur Textformate, sondern auch diverse Binärformate.
ZB bei vielen Programmiersprachen gibt es Datentypen (Sachen wie String,
Boolean, Long Integer, Integer, Word, Byte, Real etc) und man kann
verschiedenartige in Zusammenhang stehende Daten zB zu Record-Strukturen
und/oder Array-Strukturen zusammenfassen und diese dann auf Datenträger
schreiben lassen und muss dann beim Auslesen vom Datenträger darauf
achten, dass die Nullen und Einsen wieder genau entsprechend den
Komponenten dieser Strukturen zugeordnet und Variablen als Werte
zugewiesen werden.
Zurück zu den Textformaten: Bei Dateien im Textformat hat sich recht
schnell ergeben, dass - je nach ihrem Verwendungszweck - der Text, aus
dem sie bestehen, nach bestimmten Syntax-Regeln aufgebaut sein muss,
damit sie von bestimmten, den Text einlesenden/verarbeitenden Programmen
verarbeitet werden können - etwa Compilern, die anhand von Quelltext
andere Dateien erzeugen, zB .pdf-Dateien, zB ausführbare Dateien, etwa
Interpretern, etwa für HTML/XML, die den Computer Dinge tun lassen in
einer durch den Quelltext festgelegten zeitlichen Abfolge. Von
Programmen anderer Art, die Datensätze einlesen, die in einem
Textformat gespeichert sind, zB im JSON- oder YAML-Format oder als
CSV-Liste.
In diesen Fällen ist es für Editoren, mit denen man Textdateien erstellen/
bearbeiten kann, im Prinzp egal, was diese Dateinamen für Extensionen haben.
Aber es ist sehr praktisch, anhand der Dateinamensextension zu erkennen,
welche Konventionen, zB Syntax-Regeln einer Programmiersprache oder
Dokumentenbeschreibungssprache, zB Syntax-Regeln fürs Abspeichern
von auch mit Texteditoren einsehbaren Datenstrukturen (etwa Datenstrukturen
gemäß JSON- oder YAML- oder CSV-Standard), dem Text zugrunde liegen.
Denn mit diesem Wissen kann man das Verhalten der Eingabe-Editoren so
anpassen, dass es viel leichter fällt, beim Schreiben der jeweiligen
Dateien die verlangten Konventionen einzuhalten und Features wie Kürzel
für das Eingeben bestimmter Textstrukturen oder Syntax-Highlighting
und dergleichen implementieren.
Ich habe aber ehrlich gesagt nie verstanden warum LaTeX Dokumente
die gleiche Dateiextension haben wie Dokumente für Plain TeX von
Knuth.
Die .tex-Dateien von Knuth beinhalten keine LaTeX-Befehle.
LaTeX-Dateien aber schon.
Ich hätte LaTeX-Dateien vielleicht die Dateinamensextenstion ".ltx"
gegeben, von der ich nicht genau weiß, wann man sie vergibt außer bei
den Dateien des LaTeX-Kernels, die man erhält wenn man die
.dtx-Dateien, die den kommentierten Quelltext des Kernels darstellen,
an docstrip "verfüttert".
Mit freundlichem Gruß
Ulrich