.png)
Ich möchte ein Paket mit LaTeX3 erstellen, kann aber (a) keine Dokumentation zum Generieren einer neuen dtx-Datei hierfür finden und (b) keine Vorlage zum Erstellen einer dtx-Datei für ein Paket mit LaTeX3 (wahrscheinlich mit l3doc
).
Gibt es ein Dienstprogramm (wie dtxgen
für LaTeX2e) oder eine Vorlage für LaTeX3-Pakete?
Ein Beispiel für die Art von Dingen, nach denen ich suche.
Wenn ich ein LaTeX-Paket erstelle (z. B. mynewpackage
), besteht mein erster Schritt normalerweise darin,
$ dtxgen mynewpackage.sty
Dadurch wird (unter anderem) ein Makefile
und erstellt mynewpackage.dtx
. Standardmäßig wird Docstrip verwendet und die Klasse ltxdoc
für die Dokumentation. Beide sind gut, aber LaTeX3 führt einige Änderungen ein, darunter:
- Die Verwendung von
l3docstrip
zur Einführung neuer Funktionen, wie z. B.@@
ersetzt durch__<module name>
(erhalten vonexpl3.pdf
vonhttps://www.ctan.org/pkg/l3kernel) - Verwendet
\ProvidesExplPackage
statt\ProvidesPackage
(erhalten vonNeues Paket mit LaTeX2e oder LaTeX3 schreiben) - Verwenden Sie
l3doc
class anstelle vonltxdoc
(erscheint einfach sinnvoll, da es die klare Dokumentation von LaTeX3-Funktionen unterstützt).
Derzeit ist es mir nicht gelungen, eine vollständige Referenz aller Änderungen zu finden, die vorgenommen werden müssen, um die vollständige LaTeX3-Unterstützung zu aktivieren.
Gibt es ein Skript zum Generieren einer ersten DTX-Datei mit allen empfohlenen Änderungen für LaTeX3 und/oder einen Ort, an dem alle erforderlichen Änderungen dokumentiert sind?
Antwort1
Ich empfehle die Verwendung einer einfachen Struktur mit:
- Eine oder mehrere
.dtx
Dateien - Eine
.ins
Datei README.md
- Eine
CHANGELOG.ms
Datei (siehehttps://keepachangelog.com/en/1.0.0/) - (Möglicherweise)
LICENSE
als Kopie der LPPL (fürz.B(auf GitHub)
und für größere Pakete
- Eine separate
.tex
Benutzerdokumentation - (Bei Verwendung mehrerer
.dtx
Dateien) Eine.tex
Datei, um die gesamte Codedokumentation in einer PDF-Datei zu kombinieren
Basierend auf diesem Modell .dtx
würde ich Folgendes empfehlen:
% \iffalse meta-comment
%
% File: <NAME>.dtx Copyright (C) <YYYY> <AUTHOR>
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in the file
%
% https://www.latex-project.org/lppl.txt
%
% This file is part of the "<NAME> bundle" (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
% The released version of this bundle is available from CTAN.
%
% -----------------------------------------------------------------------
%
% The development version of the bundle can be found at
%
% <SOURCE REPO>
%
% for those people who are interested.
%
% -----------------------------------------------------------------------
%
%<*driver>
\documentclass{l3doc}
% The next line is needed so that \GetFileInfo will be able to pick up
% version data
\usepackage{<NAME>}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{<NAME>.sty}
%
% \title{^^A
% \pkg{<NAME>} -- <DESCRIPTION>^^A
% \thanks{This file describes \fileversion,
% last revised \filedate.}^^A
% }
%
% \author{^^A
% <AUTHOR>^^A
% \thanks{^^A
% E-mail:
% \href{mailto:<EMAIL>}
% {<EMAIL>}^^A
% }^^A
% }
%
% \date{Released \filedate}
%
% \maketitle
%
% \begin{documentation}
%
% \end{documentation}
%
% \begin{implementation}
%
% \section{\pkg{<NAME>} implementation}
%
% Start the \pkg{DocStrip} guards.
% \begin{macrocode}
%<*package>
% \end{macrocode}
%
% Identify the internal prefix (\LaTeX3 \pkg{DocStrip} convention).
% \begin{macrocode}
%<@@=<PREFIX>>
% \end{macrocode}
%
% \subsection{Initial set up}
%
% Load the essential support (\pkg{expl3}) \enquote{up-front}.
% \begin{macrocode}
\RequirePackage{expl3}
% \end{macrocode}
%
% Make sure that the version of \pkg{l3kernel} in use is sufficiently new.
% \begin{macrocode}
\@ifpackagelater {expl3}{<MINIMUM DATE>}
{}
{%
\PackageError {<NAME>} {Support package expl3 too old}
{%
You need to update your installation of the bundles 'l3kernel' and
'l3packages'.\MessageBreak
Loading~<NAME>~will~abort!%
}%
\endinput
}%
% \end{macrocode}
%
% Identify the package and give the over all version information.
% \begin{macrocode}
\ProvidesExplPackage {<NAME>} {<DATE>} {<VERSION>}
{<DESCRIPTION>}
% \end{macrocode}
%
% \begin{macrocode}
%</package>
% \end{macrocode}
%
% \end{implementation}
%
% \PrintIndex
Oben bin ich davon ausgegangen, dass wir eine Quelldatei (ein kleineres Paket) haben: Eine größere Aufteilung würde expl3
nur einmal geladen.
Bei größeren Quellen würde ich die Konvention wiederum @@
in Unterteile aufteilen, so dass jeder .dtx
in sich abgeschlossen ist. Siehe zum Beispielhttps://github.com/josephwright/siunitxzum Beispiel.