2
1

Hallo!

Aufbauend auf der Frage Wie kann ich mit arara einen Kommandozeilenbefehl ausführen? und der dortigen arara-yaml-Regel habe ich hier einen Code:

Open in writeLaTeX
% arara: pdflatex
% arara: console: { command: \texlive\2013\tlpkg\tlgs\bin\gswin32.exe -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha  -r300 -dEPSCrop -sOutputFile=FILE.png FILE.pdf }

(vollst. Bsp. unten)

Das erzeugt neben FILE.pdf auch eine Grafikdatei FILE.png. Der Clou: es wird das TeXLive-interne ghostscript verwendet, m.a.W. keine Extra-Software ist notwendig.

Jetzt ist das aber so noch nicht perfekt, denn

  • es muß der aktuelle Dateiname eingegeben werden (hier FILE.*)
  • es ist nicht sehr übersichtlich, andere haben die Anwendung gswin32.exe ggf. unter einem anderen Pfad, hier:
Open in writeLaTeX
C:\texlive\2013\tlpkg\tlgs\bin\gswin32.exe

Ich hatte mir das etwas so oder ähnlich vorgestellt (Pseudocode):

Open in writeLaTeX
% arara: pdflatex
%Insert the path of your ghostscript executive here:
%\DEF\gsPath{\texlive\2013\tlpkg\tlgs\bin\gswin32.exe}
%VIELLEICHT AUCH
%Transparency?
\DEF{JA/NEIN}
%Enlargement?
\DEF{SCALE=3.5}
% arara: console: { command: \gsPath -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha  -r300 -dEPSCrop -sOutputFile=AKTUELLE_AUSGABEDATEI.png AKTUELLE_AUSGABEDATEI.pdf }

So einfach geht es aber, z.B. mit dem Pfad, nicht!

Verbesserungsvorschläge jeglicher Art, auch betreffs des gs-Codes, sind willkommen.

Open in writeLaTeX
% arara: pdflatex
% arara: console: { command: \texlive\2013\tlpkg\tlgs\bin\gswin32.exe -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha  -r300 -dEPSCrop -sOutputFile=FILE.png FILE.pdf }

\documentclass[varwidth, margin=5mm]{standalone}
%\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{tikz}
 %\usepackage[active,tightpage]{preview} %Für spezielle Ansichten  
%==============
\begin{document}
%==============
%\begin{preview}
Das moechte  ich als PNG! \\
Original  \verb+FILE.pdf+: \\
\LaTeX    ~~~n e u~~~   \LaTeX \\
\begin{tikzpicture}[]
\filldraw [red] (0,0) circle [radius=2pt]
(1,1) circle [radius=2pt] (2,1) circle [radius=2pt] (2,0) circle [radius=2pt];
  \draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
\end{tikzpicture} \\

%\end{preview}
%==============
\end{document}
%==============

liefert:

alt text

gefragt 13 Mai '14, 16:20

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 16 Mai '14, 16:17


Disclaimer: ich habe kein Windows und kann daher die Regel nicht testen.

Die folgende Regel ghostscript sollte eigentlich machen, was Du möchtest:

Open in writeLaTeX
!config
# GhostScript rule for arara
# author: Clemens Niederberger
# requires arara 3.0+
identifier: ghostscript
name: GhostScript
command: <arara> \texlive\2013\tlpkg\tlgs\bin\gswin32c.exe @{options} -sOutputFile=@{getBasename(file)}.png @{getBasename(file)}.pdf
arguments:
- identifier: options
  flag: <arara> @{parameters.options}
  default: -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha  -r300 -dEPSCrop

Der Teil @{getBasename(file)} entspricht TeXs \jobname, fügt also den Stammnamen der Datei ein, in der der arara-Aufruf erfolgt. Verwendung:

Open in writeLaTeX
% arara: ghostscript

Oder mit anderen Optionen als -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -dEPSCrop:

Open in writeLaTeX
% arara: ghostscript: { options: <Liste der zu verwendenden Optionen> }

Edit

Mit einer weiteren Option könnte man auch das Programm per Aufruf ändern. Man könnte auch eine eigene Option für die Auflösung hinzufügen:

Open in writeLaTeX
!config
# GhostScript rule for arara
# author: Clemens Niederberger, Elke Schubert
# requires arara 3.0+
identifier: ghostscript
name: GhostScript
command: <arara> @{program} @{options} -r@{resolution} -sOutputFile=@{getBasename(file)}.png @{getBasename(file)}.pdf
arguments:
- identifier: program
  flag: <arara> @{parameters.program}
  default: <arara> @{ isWindows("gswin32c", "gs") }
- identifier: options
  flag: <arara> @{parameters.options}
  default: -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha  -dEPSCrop
- identifier: resolution
  flag: <arara> @{parameters.resolution}
  default: 300

und dann:

Open in writeLaTeX
% arara: ghostscript: { program: <anderer Pfad>/gswin32c.exe }

oder

Open in writeLaTeX
% arara: ghostscript: { resolution: 100 }

Weiterer Edit

Man kann außerdem eine Option für die Ausgabeart (device) einfügen und dabei einen weißen Hintergrund voreinstellen:

Open in writeLaTeX
!config
# GhostScript rule for arara
# author: Clemens Niederberger, Elke Schubert
# version: 0.4b 2014/30/06
# requires arara 3.0+
identifier: ghostscript
name: GhostScript
command: <arara> @{program} @{options} -r@{resolution}
        -sDEVICE=@{device} -dGraphicsAlphaBits=@{alphabits} -dTextAlphaBits=@{alphabits}
        -sOutputFile=@{outputfilename}@{allpages}.@{format} @{getBasename(file)}.pdf
arguments:
- identifier: program
  flag: <arara> @{parameters.program}
  default: <arara> @{ isWindows("gswin32c", "gs") }
- identifier: options
  flag: <arara> @{parameters.options}
  default: -q -dNOPAUSE -dBATCH  -dEPSCrop
- identifier: allpages
  flag: <arara> @{ isTrue( parameters.allpages , "-%d" ) }
- identifier: resolution
  flag: <arara> @{parameters.resolution}
  default: 300
- identifier: device
  flag: <arara> @{parameters.device}
  default: png16m
- identifier: alphabits
  flag: <arara> @{parameters.alphabits}
  default: 4
- identifier: outputfilename
  flag: <arara> @{parameters.outputfilename}
  default: <arara> @{getBasename(file)}
- identifier: format
  flag: <arara> @{parameters.format}
  default: png

Mit png16m ist jetzt ein 24-bit-color voreingestellt. Mögliche Alternativen sind zum Beispiel

  • pngalpha (transparenter Hintergrund)
  • pnggray (8-bit-gray)
  • pngmono (einfarbig)
  • ...

Alle Möglichkeiten kann man sich anzeigen lassen, wenn man das entsprechende ghostscript Programm gefolgt --help in einer Eingabeaufforderung/Konsole aufruft.

Noch ein Edit:

Ich habe noch die Optionen format (für das Augabeformat, z.B. jpg, gif, ... - Default png) und outputfilename (für einen anderen Namen der Ausgabedatei - Default getBasename(file)) ergänzt (Gruß cis).


Beispiel:

Open in writeLaTeX
% arara: pdflatex
% arara: ghostscript: { resolution: 250 , device: pnggray }
\documentclass[varwidth,margin=5mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\begin{document}
Das möchte ich als PNG!

\bigskip
\centering
\begin{tikzpicture}
  \draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
  \foreach \x/\y in {0/0,1/1,2/1,2/0} 
    \filldraw [red] (\x,\y) circle [radius=2pt];
\end{tikzpicture}
\end{document}

liefert neben dem pdf das folgende png:

alt text

Permanenter link

beantwortet 13 Mai '14, 19:57

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 01 Jul '14, 15:43

cis's gravatar image

cis
9.5k95459491

Nach Update TexLive2018 bekomme ich:
I have spotted an error in rule 'ghostscript' located at 'C:\texlive\2018\texmf-dist\scripts\arara\rules'. I could not parse the rule, something bad happened. Apparently, the provided YAML file is invalid. I will do my best to help you in any way I can. There are more details available on this exception:

Kann man da was machen?

(12 Nov '18, 02:12) cis

Mit dem ruleconverter rc.jar https://tex.stackexchange.com/questions/440172/new-version-of-arara-broke-my-custom-rule hat es auch nicht getan - hätte mich auch gewundert...

(12 Nov '18, 10:00) cis
1
(18 Nov '18, 19:18) cis

.... €dit: Die Umsetzung im Edit von @Clemens dürfte dann besser sein.

Vollständiges Beispiel:

Open in writeLaTeX
%### ghostscript.yaml ###
% arara: pdflatex
% arara: ghostscript: {  resolution: 100  , device: pngalpha  }

%#######################################
%# Parameters by default:
%# { program: gs / gswin32c ,  resolution: 300  , device: png16m , 
%#   alphabits: 4 , allpages: false , 
%#   options: -q -dNOPAUSE -dBATCH  -dEPSCrop }
%#
%# resolution: <number>  (300 [dpi] by default)
%# 
%# allpages: false (1st page as PNG)/ true (all pages as seperatly PNGs)
%#
%# alphabits: <number> (4 by default)
%# 
%# device (examples): 
%# pngalpha (transparency)
%# png16m (white background,    default)
%# pnggray (8-bit-gray) 
%# pngmono (monocolor)
%# 
%# program:
%# Insert path of  your current ghostscript-executive, if necessary:
%# program: \texlive\2013\tlpkg\tlgs\bin\gswin32.exe
%#    gs / gswin32c    by default
%#######################################

\documentclass[varwidth, margin=5pt]{standalone}
%\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usepackage{amsmath}
\usetikzlibrary{arrows}
\usepackage{graphicx}

\usepackage{xcolor}
   \pagecolor{green}

%\usepackage[active,tightpage]{preview} %Für spezielle Ansichten  
%==============
\begin{document}
%==============
%\begin{preview}

Das möchte  ich als PNG! \\
\LaTeX    ~~~n e u~~~   \LaTeX \\
\begin{tikzpicture}[]
\filldraw [red] (0,0) circle [radius=2pt]
(1,1) circle [radius=2pt] (2,1) circle [radius=2pt] (2,0) circle [radius=2pt];
  \draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
\end{tikzpicture} \\

%\begin{tikzpicture}[]
%%\draw[-*] (3,0) -- (4,1);
%\draw[-o] (5,0) -- (6,1);
%\draw[-|] (7,0) -- (8,1);
%\end{tikzpicture}
%\verb+\includegraphics{FILE.png}+

%\includegraphics[]{FILE.png}

%\end{preview}
%==============
\end{document}
%==============

alt text

alt text

Open in writeLaTeX
% arara: ghostscript: {  resolution: 300  , device: pngalpha   }

alt text

Open in writeLaTeX
% arara: ghostscript: {  resolution: 100  , device: pnggray   }

alt text

Permanenter link

beantwortet 15 Mai '14, 01:40

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 17 Mai '14, 01:23

Komischerweise kam immer das richtige Erg. raus. Ich habe nur als dieses Schmalspur-ghostcript - aber wenn

program: texlive2013tlpkgtlgsbingswin32.exe ,
weglasse, tut es manchmal doch - in der Kommandozeile muss ich das eingeben.

(15 Mai '14, 16:52) cis

Ach Mann, ich versteh das nicht, das dürfte ohne program: ... gar nicht tun.

€dit: Also bei mir geht z.B. nur der Aufruf gs --help in der Form

\texlive\2013\tlpkg\tlgs\bin\gswin32.exe --help
(15 Mai '14, 17:43) cis

Ach Mann! Ich würde mal zu gerne wissen, warum das bei mir auch ohne Pfadangabe funktioniert (habe nur Nullnummer-ghostscript im TeXLive Anhang) - IST DAS EIN ZAUBERPROGRAMM?

(15 Mai '14, 20:38) cis

Das dein Windows mit dem Aufruf gs --help nichts findet, ist klar. Das richtige ghostscript unter Windows heißt ebenfalls gswin32c. Versuch es also mit gswin32c --help. in der Eingabeaufforderung.

(16 Mai '14, 00:39) esdd

Ich bin egtl. ziemlich überzeugt, daß arara einen Suchpfad zu meinem versteckten gs hat (installiert hab ich es ja nicht, also auch keinen Suchpfad) bzw. allgemeiner zum Ordner "Win32"; aus dem gleichen Grund versucht arara auch mit Gewalt das Windows-TL-perl zu verwenden, wenn man mit arara perl-Befehle aufrufen möchte. Ich würde am liebsten mal wissen, wie ich TL-Perl erweitern kann (mit Modulen etc.) - aber das ist keine TeX-Frage und daher darf ich das wahrschl. nicht fragen.

(24 Jul '14, 16:05) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×46
×39
×30
×9
×4

gestellte Frage: 13 Mai '14, 16:20

Frage wurde gesehen: 10,904 Mal

zuletzt geändert: 18 Nov '18, 19:18