OSDN Git Service

prev. commit was broken
[luatex-ja/luatexja.git] / src / patches / lltjp-geometry.sty
index ff5ca94..9b8f1fc 100644 (file)
@@ -3,14 +3,26 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjp-geometry}[2015/01/01 Patch to geometry for LuaTeX-ja with vertical writing mode]
-\RequirePackage{ifluatex}
-
+\ProvidesPackage{lltjp-geometry}[2020/02/25 Patch to geometry for LuaTeX-ja with vertical writing mode]
+\RequirePackage{expl3}
 \ifdefined\if@ltj@@geometry@tate\expandafter\endinput\fi
 \newif\if@ltj@@geometry@tate
+\newif\if@ltj@@geometry@forceoff
 \@ltj@@geometry@tatefalse
-\ifluatex\else % pTeX
-  \@ltj@@geometry@tatetrue
+\@ltj@@geometry@forceofffalse
+\DeclareOption{force}{\@ltj@@geometry@tatetrue}
+\DeclareOption{disable}{\@ltj@@geometry@forceofftrue}
+
+\ProcessOptions\relax
+
+\RequirePackage{ifluatex}
+\ifluatex
+  \ifdefined\luatexjaLoaded\else
+    \PackageError{lltjp-geometry}{%
+         lltjp-geometry does not work without luatexja.
+       }{}
+\fi
+\else % pTeX
 \def \AtBeginDvi #1{%
   \global \setbox \@begindvibox
     \vbox{\yoko\unvbox \@begindvibox #1}%
 \fi
 
 \RequirePackage{filehook}
+\RequirePackage{etoolbox}
 \newif\ifGm@ltj@layoutswitch
 \let\orig@PackageWarningNoLine=\PackageWarningNoLine
-\ifdefined\ifGm@swap@papersize\else\newif\ifGm@swap@papersize\fi
+% define ifGm@swap@papersize if it is undefined
+\expandafter\newif\csname ifGm@swap@papersize\endcsname
 
 \AtBeginOfPackageFile{geometry}{%
   \edef\Gm@ltj@topskip{\the\topskip}
   \edef\Gm@ltj@footskip{\the\footskip}
 \ifluatex
   \ifnum\ltjgetparameter{direction}=3 \@ltj@@geometry@tatetrue\fi
+\else
+  \@gobble\iftrue\csname iftdir\endcsname\@ltj@@geometry@tatetrue\fi
 \fi
+\csname tl_if_in:NnT\endcsname\@begindocumenthook{\tate}{\@ltj@@geometry@tatetrue}
 \if@ltj@@geometry@tate
-  \let\PackageWarningNoLine\@gobbletwo% 警告抑止
+  \if@ltj@@geometry@forceoff
+    \@ltj@@geometry@tatefalse
+  \else
+    \let\PackageWarningNoLine\@gobbletwo% 警告抑止
+  \fi
 \fi
 }
+
 \AtEndOfPackageFile{geometry}{%
 \let\PackageWarningNoLine=\orig@PackageWarningNoLine
 \if@ltj@@geometry@tate
 \define@key{Gm}{noheadfoot}[true]{\Gm@doifelse{noheadfoot}{#1}%
   {\Gm@setlength\headheight\z@\Gm@defbylen{ltj@headsep}\z@
   \Gm@defbylen{ltj@footskip}\z@}{}}%
+\define@key{Gm}{layoutwidth}{\Gm@layouttrue\Gm@setlength\Gm@layoutheight{#1}}%
+\define@key{Gm}{layoutheight}{\Gm@layouttrue\Gm@setlength\Gm@layoutwidth{#1}}%
+\define@key{Gm}{layoutsize}{\Gm@branch{#1}{layoutwidth}{layoutheight}}%
+\define@key{Gm}{layout}{\Gm@layouttrue\@nameuse{Gm@#1}{Gm@layout}%
+  \Gm@setlength\@tempdima{\Gm@layoutheight}%
+  \Gm@setlength\Gm@layoutheight{\Gm@layoutwidth}%
+  \Gm@setlength\Gm@layoutwidth{\@tempdima}%
+}%
 
 % \@mparswitch は傍注の出力位置を左右ページで変えるスイッチだが,
 % geometry.sty はこれを左右ページのレイアウトを変えるか否かの判定にも使っている.
    \ifGm@showcrop
     \vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset%
      \hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset%
-      \vb@xt@\Gm@layoutheight{%
+      \vb@xt@\Gm@layoutwidth{%
        \let\protect\relax
-       \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,1,-3,3)\hfil\Gm@cropmark(1,1,3,3)}%
+       \hb@xt@\Gm@layoutheight{\Gm@cropmark(-1,1,-3,3)\hfil\Gm@cropmark(1,1,3,3)}%
        \vfil
-       \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,-1,-3,-3)\hfil\Gm@cropmark(1,-1,3,-3)}}%
+       \hb@xt@\Gm@layoutheight{\Gm@cropmark(-1,-1,-3,-3)\hfil\Gm@cropmark(1,-1,3,-3)}}%
      \hss}%
     \vss}%
    \fi%
     \addtolength\@tempdimb{\topskip}%
     \textheight\@tempdimb
   \fi
-  \advance\oddsidemargin\Gm@layoutvoffset%
-  \advance\evensidemargin\Gm@layoutvoffset%
-  \advance\topmargin\Gm@layouthoffset%
+  \advance\oddsidemargin\Gm@layouthoffset%
+  \advance\evensidemargin\Gm@layouthoffset%
+  \advance\topmargin\Gm@layoutvoffset%
   \addtolength\Gm@layoutheight{\Gm@bindingoffset}%
 }% end of \Gm@@process
 % log