
Betrachten Sie einePaket(oderKlasse), das Makros mit zwei optionalen Argumenten bereitstellt. Man könnte
(i) verwenden twoopt
. Der Code in der .sty
Datei ist leicht zu lesen und daher zu verstehen.
(ii) Codieren Sie das Makro von Hand. Der Code sieht schrecklich aus, bindet den Benutzer jedoch nicht an ein zusätzliches Paket.
Außerdem gibt es manchmal mehrere Pakete, um dasselbe zu erreichen: ifthen
, xifthen
und ifthenx
.
Wie wähle ich das zu verwendende Paket aus? In welchen Fällen muss ich Dinge von Hand codieren? Gibt es bewährte Methoden? Bitte beachten Sie, dass die Beispiele die allgemeine Frage veranschaulichen.
Antwort1
Im Zweifelsfall entscheiden Sie sich für den Standard.
Auch wenn ifthen
die Programmierschicht des aufstrebenden LaTeX3-Kernels noch nicht fest etabliert ist, expl3
ist sie leistungsstark und sehr stabil. Selbst in dertexlive-core
Paket des Paket-Repositorys von Arch Linux (denken Sie an das Minimalste vom Minimalisten), der gesamte L3-Kernel ist enthalten. Es wird Ihren Benutzern immer zur Verfügung stehen.
Aus Erfahrung mit ähnlichen Problemen,nichtcodieren Sie Dinge von Hand, es sei denn, es ist unbedingt nötig – es wird nahezu unmöglich, sie zu pflegen und, wie Sie sagen, auf den ersten Blick unmöglich zu verstehen.
Hier mangelt es vielleicht an der Konvention, aber die beste Konvention ist in jedem Fall, das offizielle Material zu verwenden.
Von hier aus: Suchen Sie Folgendes mit texdoc
:
expl3
erklärt die Gründe dafürexpexperimentellMaTeX3Syntax und führt die Komponente 'Pakete' ein (in der Praxis braucht man nur\usepackage{expl3}
interface3
dient als Referenz für die gesamteexpl3
Bibliothek und Schnittstellexparse
unschätzbare Ressource bei der Definition von Befehlen mit einer komplexeren Syntax
Antwort2
Wenn das twoopt
Paket Ihren Anforderungen entspricht, ist die Verwendung völlig in Ordnung.
Generell ist LaTeX ein sich ständig weiterentwickelndes System. Pakete sind der Motor dieses Prozesses. Wenn Sie deren universelle Verwendung vernachlässigen oder sich für Hard-Code entscheiden, wenn es ein geeignetes Paket gegeben hätte, würden Sie eine wichtige Eigenschaft des LaTeX-Systems aufgeben.
Obwohl die letzte Aussage ein wenig dramatisch klingt, steckt doch Wahrheit darin. Abgesehen davon bleibt es oft eine Frage der Wahl und der Gewohnheiten (wir sind alle Menschen!). Wenn Sie jedoch die Möglichkeit haben, durch die Verwendung von Paketen einen besser lesbaren Code zu erhalten,fortfahren. Dieses Kriterium ist übrigens ein Hauptproblem des LaTeX3-Projektes.
Die Bindung an ein Paket in einer .sty
oder .cls
einer Datei schränkt Sie in keiner Weise ein. Selbst wenn ein Paket, das Sie in Ihrem eigenen Paketcode verwendet haben, in Zukunft veraltet sein wird, weil ein neueres Paket besser ist oder was auch immer, bedeutet das nicht, dass die von Ihnen verwendete Funktion nicht mehr brauchbar ist. Darüber hinaus können Sie als Paketautor Ihr Paket je nach aktuellem Stand pflegen/aktualisieren. Abgesehen davon möchte ich daran erinnern, dass LaTeX2e derzeit sehr stabil ist. Aus dieser Sicht ist also „[die Verwendung] des offiziellen Materials“ (@Sean Allred, siehe oben) völlig vernünftig.
Und schließlich: Wenn drei Pakete für ein bestimmtes Problem genau die gleiche Aufgabe erfüllen, verweise ich auf die obige Aussage „Wir sind alle nur Menschen!“: Verwenden Sie das Paket, das Ihnen am besten gefällt oder an das Sie gewöhnt sind.