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, 10:20

cis's gravatar image

cis
5.4k860168
Akzeptiert: 68%

bearbeitet 16 Mai '14, 10:17

Das scheint mir ja genau so ein XY-Problem zu sein. Am sinnvollsten wäre eine ghostscript-Regel für arara. Noch sinnvoller wäre, dafür gar nicht arara zu verwenden sondern die standalone-Klasse... dann kann man nämlich einfach die bestehende pdflatex-Regel verwenden

(13 Mai '14, 10:29) Clemens

Diese stark reduzierte ghostscript Version ist wahrscheinlich sowieso nur unter Windows bei TeX Live dabei. Und sie wird aus gutem Grund von TeXLive nicht in den Windows-Suchpfad eingetragen.

(13 Mai '14, 11:27) esdd

exe gibts nur unter Windows :p Bei mir ist Ghostscript nativ installiert, da brauche ich keinen Pfad... ich hab aber eine Idee, wie die Regel aussehen müsste. Ich poste später mal was, und wenn's nix ist, dann kann ich die Antwort ja wieder löschen

(13 Mai '14, 12:36) Clemens

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, 13:57

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 01 Jul '14, 09:43

cis's gravatar image

cis
5.4k860168

@Clemens Wie wäre es, wenn man beim Ausgabefile noch -%d ergänzt:

-sOutputFile=@{getBasename(file)}-%d.png

Dann werden alle Seiten eines pdf in jeweils einzelne png umgewandelt, die im Namen dann die Seitennummer enthalten. Ohne dieses %d wird dagegen immer nur die erste Seite verwendet.

(15 Mai '14, 20:49) esdd
1

@esdd Gute Idee! Ich habs geändert

(16 Mai '14, 04:48) Clemens

Also ich würde meinen, das Programm hat dann den letzten Schliff - super, echt gut gelungen! Und auch mit echtem Praxisnutzen und, auf Wunsch, auch mit Spar-ghostscript nutzbar. Sehr schön.

(16 Mai '14, 21:33) cis

ghostscript.yaml wurde hier http://cereda.github.io/arara/ (noch?) nicht aufgenommen, eine Regel animate.yaml dagegen schon -tut bei mir allerdings gleich mal nicht, naja was soll, hab ja diese hier.

(29 Jun '14, 12:52) 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 14 Mai '14, 19:40

cis's gravatar image

cis
5.4k860168

bearbeitet 16 Mai '14, 19: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, 10: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, 11: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, 14: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.

(15 Mai '14, 18: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, 10:05) cis
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×31
×27
×24
×3
×3

Frage gestellt: 13 Mai '14, 10:20

Frage wurde angeschaut: 1,998 Mal

Zuletzt aktualisiert: 24 Jul '14, 10:05