Posts tagged ‘Asymptote’

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}

LaTeX und Asymptote

Hier ein funktionierendes Beispiel, wie man mit Arara Asymptote Code übersetzen kann. Einen Weg, alle asy-Dateien zu übersetzen, habe ich noch nicht gefunden.

%!TEX TS-program = Arara
% arara: pdflatex: { shell: yes }
% arara: asymptote: { files: [ asym-1.asy ] }
% 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}
 
\end{document}