summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/graphicxpsd/graphicxpsd.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/graphicxpsd/graphicxpsd.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/graphicxpsd/graphicxpsd.sty')
-rw-r--r--macros/latex/contrib/graphicxpsd/graphicxpsd.sty98
1 files changed, 98 insertions, 0 deletions
diff --git a/macros/latex/contrib/graphicxpsd/graphicxpsd.sty b/macros/latex/contrib/graphicxpsd/graphicxpsd.sty
new file mode 100644
index 0000000000..3f170d9c2f
--- /dev/null
+++ b/macros/latex/contrib/graphicxpsd/graphicxpsd.sty
@@ -0,0 +1,98 @@
+% #!rm -f tigerpsdfmt4* && ptex2pdf -l -u -ot '-shell-escape' -od '-v' test-gin-rule-psd
+% #!rm -f tigerpsdfmt4* && xelatex -shell-escape test-gin-rule-psd
+% #!rm -f tigerpsdfmt4* && pdflatex -shell-escape test-gin-rule-psd
+%#!rm -f tigerpsdfmt4* && lualatex -shell-escape test-gin-rule-psd
+%%
+%% This is file 'graphicxpsd.sty'.
+%%
+%% Copyright (c) 2017, 2018 Munehiro Yamamoto
+%%
+%% * e-mail: munepixyz@gmail.com, munepi@greencherry.jp
+%% * GitHub: https://github.com/munepi
+%% * Twitter: @munepixyz
+%%
+%% This package is licensed under the terms of the MIT License.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{graphicxpsd}
+ [2018/01/30 v1.1 Adobe Photoshop Data format (PSD) support for graphicx package
+ with sips (Darwin/macOS)/magick (ImageMagick) command]
+
+%% declare package errors
+\def\gfxpsd@error{\PackageError{graphicxpsd}}
+\def\gfxpsd@warning{\PackageWarning{graphicxpsd}}
+\def\gfxpsd@warningnoline{\PackageWarningNoLine{graphicxpsd}}
+\def\gfxpsd@info{\PackageInfo{graphicxpsd}}
+
+%% support major graphicx drivers
+\newif\if@gfxpsd@dvipdfmx \@gfxpsd@dvipdfmxfalse
+\newif\if@gfxpsd@pdftex \@gfxpsd@pdftexfalse
+\DeclareOption{dvipdfmx}{\@gfxpsd@dvipdfmxtrue\@gfxpsd@pdftexfalse}
+\DeclareOption{xetex}{\@gfxpsd@dvipdfmxtrue\@gfxpsd@pdftexfalse}
+\DeclareOption{luatex}{\@gfxpsd@dvipdfmxfalse\@gfxpsd@pdftextrue}
+\DeclareOption{pdftex}{\@gfxpsd@dvipdfmxfalse\@gfxpsd@pdftextrue}
+
+%% support two psd-to-pdf commands:
+%% sips (Darwin/macOS), magick/convert (ImageMagick)
+\newif\if@gfxpsd@imagemagick \@gfxpsd@imagemagickfalse
+\def\@gfxpsd@psdtopdf{sips}%% as default
+\DeclareOption{sips}{%
+ \@gfxpsd@imagemagickfalse\gdef\@gfxpsd@psdtopdf{sips}}
+\DeclareOption{imagemagick}{%
+ \@gfxpsd@imagemagicktrue\gdef\@gfxpsd@psdtopdf{magick}}
+\DeclareOption{magick}{%
+ \@gfxpsd@imagemagicktrue\gdef\@gfxpsd@psdtopdf{magick}}
+\DeclareOption{convert}{%
+ \@gfxpsd@imagemagicktrue\gdef\@gfxpsd@psdtopdf{convert}}
+
+\ProcessOptions\relax
+
+%% support the extension .psd (psdtopdf)
+\if@gfxpsd@dvipdfmx
+ \@namedef{Gin@rule@.PSD}#1{{psdtopdf}{.xbb}{#1}}
+ \@namedef{Gin@rule@.psd}#1{{psdtopdf}{.xbb}{#1}}
+\else\if@gfxpsd@pdftex
+ \@namedef{Gin@rule@.PSD}#1{{psdtopdf}{.pdf}{#1}}
+ \@namedef{Gin@rule@.psd}#1{{psdtopdf}{.pdf}{#1}}
+\else
+ \gfxpsd@error{Please choice specific dviware driver from the following list
+ and set the one as a documentclass option.^^J
+ available dviware drivers: dvipdfmx, xetex, luatex, pdftex}%
+\fi\fi
+
+%% then, include .psd file as converted PDF
+\@ifundefined{Ginclude@pdf}{\gfxpsd@error{%
+ Please load 'graphicxpsd' package after loading 'graphicx' package.}}\relax
+\let\Ginclude@psdtopdf\Ginclude@pdf
+
+%% compatibility for TL16 or lower version
+\@ifundefined{GPT@space}{%
+ \def\GPT@space{ }%
+}{}
+
+%% check shell escape trigger
+\IfFileExists{shellesc.sty}{%%is bundled in TL15 or higher release version
+\RequirePackage{shellesc}}{%%otherwise, such TL has no luatex.
+ \protected\def\ShellEscape{\immediate\write18 }%%compatibility for TL14 or lower version
+}
+
+%% read .psd file
+\let\clone@Gread@pdf\Gread@pdf
+\def\Gread@psdtopdf#1{%
+ \typeout{converting: \Gin@base\Gin@ext\GPT@space -> \Gin@base4gfxpsd.pdf}%
+ \if@gfxpsd@imagemagick
+ \ShellEscape{\@gfxpsd@psdtopdf\GPT@space\Gin@base\Gin@ext\GPT@space\Gin@base4gfxpsd.pdf}%
+ \else
+ \ShellEscape{sips -s format pdf \Gin@base\Gin@ext\GPT@space --out \Gin@base4gfxpsd.pdf}%
+ \fi
+ %% renamed inside: foo.psd -> foo4gfxpsd.pdf
+ \let\clone@Gin@base\Gin@base
+ \def\Gin@base{\clone@Gin@base4gfxpsd}%
+ \def\Gin@ext{.pdf}%
+% \typeout{!!! #1}%%=> tigerpsdfmt4gfxpsd.xbb
+% \typeout{!!! \Gin@base\Gin@ext}%%=> tigerpsdfmt4gfxpsd.pdf
+ \clone@Gread@pdf{#1}}
+
+\endinput
+%%
+%% End of file `graphicxpsd.sty'.