Arara Regel, um alle Asymptote Dateien zu übersetzen
Mit der Hilfe von Claude Opus habe ich eine Regel für Arara geschrieben, die alle asy Dateien im LaTeX-Verzeichnis übersetzt. Auf meinem Rechner liegt die Datei dann als arara-rule-asymptoteall.yaml in C:\texlive\2026\texmf-dist\scripts\arara\rules, unten ein Beispiel für den Aufruf.
!config
identifier: AsymptoteAll
name: AsymptoteAll
authors:
- Uwe Ziegenhagen, ziegenhagen@gmail.com
commands:
- name: Asymptote all *.asy files in directory
command: >
@{
directory = new java.io.File(reference.toString())
.getAbsoluteFile().getParentFile();
commands = [];
foreach (file : directory.listFiles()) {
if (file.getName().endsWith('.asy')) {
commands.add(getCommandWithWorkingDirectory(
directory.getAbsolutePath(),
'asy', '-f', format, file.getName()));
}
}
if (commands.isEmpty()) {
throwError('No .asy-files found in ' + reference.toString());
}
return commands;
}
arguments:
- identifier: format
flag: >
@{
return parameters.format;
}
default: 'pdf'
Verbesserungspotential gibt es noch, die Parameterübergabe ist noch nicht für mehrere Parameter angepasst, auch werden bei jedem Arara-Lauf alle Dateien — auch die unveränderten — neu übersetzt.
%!TEX TS-program = Arara % arara: pdflatex: { shell: yes } % arara: AsymptoteAll % arara: pdflatex: { shell: yes } \documentclass{article} \usepackage[inline]{asymptote} % Definitionen, die alle asy-Bilder im Dokument sehen sollen: \begin{asydef} import geometry; defaultpen(fontsize(10pt)); \end{asydef} \newcommand{\vek}[1]{\mathbf{#1}} \begin{document} Der Einheitskreis mit eingezeichnetem Radius: \begin{center} \begin{asy} size(5cm); draw(unitcircle, blue+0.8bp); pair M = (0,0), P = dir(35); draw(M--P, red, Arrow(4)); dot(M); dot(P); label("$M$", M, SW); label("$P$", P, NE); label("$\vek{r}$", midpoint(M--P), NW); \end{asy} \end{center} \begin{center} \begin{asy} size(5cm); draw(unitcircle, blue+0.8bp); pair M = (0,0), P = dir(35); draw(M--P, red, Arrow(4)); dot(M); dot(P); label("$M$", M, SW); label("$P$", P, NE); label("$\vek{r}$", midpoint(M--P), NW); \end{asy} \end{center} \end{document} |




