summaryrefslogtreecommitdiff
path: root/language/japanese/BX/bxdvidriver/bxdvidriver.sty
diff options
context:
space:
mode:
Diffstat (limited to 'language/japanese/BX/bxdvidriver/bxdvidriver.sty')
-rw-r--r--language/japanese/BX/bxdvidriver/bxdvidriver.sty281
1 files changed, 281 insertions, 0 deletions
diff --git a/language/japanese/BX/bxdvidriver/bxdvidriver.sty b/language/japanese/BX/bxdvidriver/bxdvidriver.sty
new file mode 100644
index 0000000000..612249d600
--- /dev/null
+++ b/language/japanese/BX/bxdvidriver/bxdvidriver.sty
@@ -0,0 +1,281 @@
+% bxdvidriver.sty
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxdvidriver}[2017/02/13 v0.2a]
+
+%% preparation
+\def\bxdd@pkgname{bxdvidriver}
+\providecommand\bxDebug[1]{}
+
+%--------------------------------------- general
+
+%% \bxdd@dvi@driver@list
+% List of dvi-driver names.
+\@onlypreamble\bxdd@dvi@driver@list
+\def\bxdd@dvi@driver@list{%
+ dvips,xdvi,dvipdf,dvipdfm,dvipdfmx,dvipsone,%
+ dviwindo,oztex,textures,pctexps,pctex32}
+%% \bxdd@pdf@driver@list
+% List of pdf-driver names.
+\@onlypreamble\bxdd@pdf@driver@list
+\def\bxdd@pdf@driver@list{%
+ pdftex,xetex,luatex,vtex}
+
+%% packages
+\RequirePackage{ifpdf,ifxetex,ifluatex,ifvtex}
+\RequirePackage{pdftexcmds}
+
+%% variables
+\newif\ifbxdd@ok
+\@onlypreamble\bxdd@driver
+\let\bxdd@driver\relax % driver given to this package
+\@onlypreamble\bxdd@pdf@driver
+\let\bxdd@pdf@driver\relax % actual pdf-mode driver, or \relax
+
+%% \[bxdd@T/<driver>]
+\@for\bxdd@x:=\bxdd@dvi@driver@list\do{%
+ \expandafter\let\csname bxdd@T/\bxdd@x\endcsname=d}
+\@for\bxdd@x:=\bxdd@pdf@driver@list\do{%
+ \expandafter\let\csname bxdd@T/\bxdd@x\endcsname=p}
+
+%% \bxdd@detokenize\CS
+\def\bxdd@detokenize#1{%
+ \expandafter\bxdd@detokenize@a\meaning#1\relax#1}
+\def\bxdd@detokenize@a#1>#2\relax#3{%
+ \def#3{#2}}
+
+%% switch 'bxdd@in@preamble'
+\newif\ifbxdd@in@preamble
+\ifx\documentclass\@twoclasseserror
+ \bxdd@in@preambletrue
+\fi
+
+%--------------------------------------- options
+
+%% 'check'/'nocheck'
+\newif\ifbxdd@check \bxdd@checktrue
+\DeclareOption{check}{%
+ \bxdd@checktrue}
+\DeclareOption{nocheck}{%
+ \bxdd@checkfalse}
+%% driver options
+\DeclareOption*{%
+ \bxdd@pfxplus\CurrentOption \ifx\bxdd@tmpa\@empty
+ \let\bxdd@tmpa\CurrentOption
+ \else
+ \expandafter\let\csname bxdd@T/\bxdd@tmpa\endcsname=d%
+ \fi
+ \expandafter\let\expandafter\bxdd@tmpb
+ \csname bxdd@T/\bxdd@tmpa\endcsname
+ \ifx\bxdd@tmpb\relax % unknown name
+ \PackageError\bxdd@pkgname
+ {Unknown driver name '\bxdd@tmpa' found}%
+ {The invalid option is ignored.\MessageBreak\@ehc}
+ \else\ifx\bxdd@driver\relax % first
+ \let\bxdd@driver\bxdd@tmpa
+ \else\ifx\bxdd@driver\bxdd@tmpa % repeated
+ \PackageInfo\bxdd@pkgname
+ {Redundant driver option '\bxdd@tmpa',\MessageBreak
+ found}%
+ \else % second
+ \PackageError\bxdd@pkgname
+ {Multiple driver options are given\MessageBreak
+ ('\bxdd@driver' and '\bxdd@tmpa')}%
+ {The extra option '\bxdd@tmpa' is ignored.\MessageBreak\@ehc}
+ \fi\fi\fi}
+\def\bxdd@pfxplus#1{%
+ \expandafter\bxdd@pfxplus@a#1\@gobble+\@nil}
+\def\bxdd@pfxplus@a#1+#2\@nil{%
+ \edef\bxdd@tmpa{\ifx\@nil#1\@nil#2\else\fi}}
+%%
+\ProcessOptions*
+
+%% check consistency
+\ifx\bxdd@driver\relax
+ \PackageInfo\bxdd@pkgname
+ {No driver option given,}
+\else\expandafter\ifx\csname bxdd@T/\bxdd@driver\endcsname p%
+ \PackageWarning\bxdd@pkgname
+ {The driver '\bxdd@driver' is a pdf-mode driver and\MessageBreak
+ inappropriate for this package,}
+\else\bxDebug{driver=\bxdd@driver}
+\fi\fi
+
+%--------------------------------------- pdf-mode detection
+
+%% check 'pdfmode' and set \bxdd@pdf@driver
+\bxdd@oktrue
+\ifluatex
+ \let\bxdd@tmpa\m@ne
+ \pdf@isprimitive\outputmode\outputmode{\let\bxdd@tmpa\outputmode}{}
+ \pdf@isprimitive\pdfoutput\pdfoutput{\let\bxdd@tmpa\pdfoutput}{}
+ \ifnum\bxdd@tmpa>\z@
+ \def\bxdd@pdf@driver{luatex}%
+ \else\ifnum\bxdd@tmpa<\z@
+ \PackageError\bxdd@pkgname
+ {INTERNAL ERROR (1)}
+ {Package loading is aborted.\MessageBreak\@ehc}
+ \bxdd@okfalse
+ \fi\fi
+\else\ifxetex
+ \def\bxdd@pdf@driver{xetex}
+\else\ifvtex
+ \def\bxdd@pdf@driver{vtex}
+\else\ifpdf
+ \def\bxdd@pdf@driver{pdftex}
+\fi\fi\fi\fi
+\ifbxdd@ok\else
+\expandafter\endinput\fi\relax
+
+% clear \bxdd@driver if pdf-mode
+\ifx\bxdd@pdf@driver\relax\else
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is ignored, because\MessageBreak
+ the engine is in pdf-mode,}
+ \let\bxdd@driver\relax
+\fi
+
+%--------------------------------------- append to global
+
+%% variables
+\let\bxdd@gopt\relax
+\let\bxdd@godrv\relax
+\let\bxdd@godrv@multiple=M% flag value
+
+%% \bxdd@scan@global@options
+\@onlypreamble\bxdd@scan@global@options
+\def\bxdd@scan@global@options{%
+ \begingroup
+ \@for\bxdd@gopt:=\@classoptionslist\do{%
+ \let\bxdd@tmpa\bxdd@gopt \bxdd@detokenize\bxdd@tmpa
+ \expandafter\ifx\csname bxdd@T/\bxdd@tmpa\endcsname\relax\else
+ \ifbxdd@in@preamble
+ \@expandtwoargs\@removeelement\bxdd@gopt
+ \@unusedoptionlist\@unusedoptionlist
+ \fi
+ \ifx\bxdd@godrv\bxdd@gopt % just redundant
+ \else\ifx\bxdd@godrv\relax % first
+ \let\bxdd@godrv\bxdd@gopt
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple % more
+ \PackageInfo\bxdd@pkgname
+ {Extra driver option in global option list\MessageBreak
+ ('\bxdd@gopt'),}%
+ \else % second
+ \PackageInfo\bxdd@pkgname
+ {Multiple driver options in global option list\MessageBreak
+ ('\bxdd@godrv' and '\bxdd@gopt'),}%
+ \let\bxdd@godrv\bxdd@godrv@multiple
+ \fi\fi\fi
+ \fi}
+ \global\let\@unusedoptionlist\@unusedoptionlist
+ \aftergroup\bxdd@okfalse
+ \ifx\bxdd@godrv\relax
+ \ifx\bxdd@driver\relax\else
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is appended to the\MessageBreak
+ global option list,}
+ \aftergroup\bxdd@oktrue
+ \fi
+ \else\ifx\bxdd@godrv\bxdd@driver
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is already contained\MessageBreak
+ in the global option list,}
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple
+ \ifbxdd@check
+ \PackageError\bxdd@pkgname
+ {Multiple driver options in global option list\MessageBreak
+ (see log for detail)}%
+ {\@ehd}%
+ \fi
+ \else\ifx\bxdd@driver\relax
+ % nothing to do
+ \else % inconsistent
+ \ifbxdd@check
+ \PackageError\bxdd@pkgname
+ {The driver specified is '\bxdd@driver',\MessageBreak
+ but the global list contains '\bxdd@godrv'}%
+ {\@ehd}%
+ \else
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is discarded,\MessageBreak
+ because the global option list contains another driver\MessageBreak
+ '\bxdd@godrv',}
+ \fi
+ \fi\fi\fi\fi
+ \endgroup}
+
+%% append the specified driver option
+\ifbxdd@in@preamble
+ \bxdd@scan@global@options
+ \ifbxdd@ok
+ \edef\bxdd@tmpa{%
+ \noexpand\g@addto@macro\noexpand\@classoptionslist{%
+ ,\bxdd@driver}%
+ }\bxdd@tmpa
+ \fi
+\else % 'before-preamble'
+ \let\bxdd@org@fileswith@pti@ns\@fileswith@pti@ns
+ \def\@fileswith@pti@ns#1{%
+ \ifx#1\@clsextension
+ \let\@fileswith@pti@ns\bxdd@org@fileswith@pti@ns
+ \let\bxdd@org@fileswith@pti@ns\@undefined
+ \g@addto@macro\@documentclasshook{%
+ \bxdd@scan@global@options}%
+ \ifx\bxdd@driver\relax
+ \def\bxdd@tmpa{\@fileswith@pti@ns#1}%
+ \else
+ \edef\bxdd@tmpa{\noexpand\bxdd@tmpb{\bxdd@driver}}%
+ \def\bxdd@tmpb##1[##2]{\@fileswith@pti@ns#1[{##2,##1}]}%
+ \fi
+ \else
+ \def\bxdd@tmpa{\bxdd@org@fileswith@pti@ns#1}%
+ \fi
+ \bxdd@tmpa}
+\fi
+
+%--------------------------------------- check for graphics drivers
+
+%% \bxdd@scan@graphics@drivers
+\@onlypreamble\bxdd@scan@graphics@drivers
+\def\bxdd@scan@graphics@drivers{%
+ \begingroup
+ \edef\bxdd@tmpa{\bxdd@dvi@driver@list,\bxdd@pdf@driver@list}%
+ \@for\bxdd@gopt:=\bxdd@tmpa\do{%
+ \expandafter\ifx\csname ver@\bxdd@gopt.def\endcsname\relax\else
+ \ifx\bxdd@godrv\relax % first
+ \let\bxdd@godrv\bxdd@gopt
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple % more
+ \PackageInfo\bxdd@pkgname
+ {Extra graphics driver is loaded\MessageBreak
+ ('\bxdd@gopt'),}%
+ \else % second
+ \PackageInfo\bxdd@pkgname
+ {Multiple graphics driver is loaded\MessageBreak
+ ('\bxdd@godrv' and '\bxdd@gopt'),}%
+ \let\bxdd@godrv\bxdd@godrv@multiple
+ \fi\fi
+ \fi}
+ \ifx\bxdd@godrv\relax
+ \PackageInfo\bxdd@pkgname
+ {No graphics driver used,}
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple
+ \ifbxdd@check
+ \PackageError\bxdd@pkgname
+ {Multiple graphics drivers are loaded\MessageBreak
+ (see log for detail)}%
+ {\@ehd}%
+ \fi
+ \else
+ \PackageInfo\bxdd@pkgname
+ {Graphics driver is '\bxdd@godrv',}
+ \fi\fi
+ \endgroup}
+
+%% add hook
+\AtBeginDocument{%
+ \bxdd@scan@graphics@drivers}
+
+%--------------------------------------- all done
+\endinput
+%% EOF