OSDN Git Service

lltjext.sty: direction option of picture environment
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 5 Aug 2014 01:03:36 +0000 (10:03 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 5 Aug 2014 01:03:36 +0000 (10:03 +0900)
src/lltjext.sty
test/test56-lltjext-picture.pdf [new file with mode: 0644]
test/test56-lltjext-picture.tex [new file with mode: 0644]

index 58e186f..3be9e3e 100644 (file)
    {\X@picture}{\X@picture<Z>}}
 \def\X@picture<#1>(#2,#3){\@ifnextchar(%)
    {\@@picture<#1>(#2,#3)}{\@@picture<#1>(#2,#3)(0,0)}}
-\newdimen\save@ybaselineshift
-\newdimen\save@tbaselineshift
 \newdimen\@picwd
+\def\ltj@@pic@reset@blshift{%
+  \ltj@yablshift\z@\ltj@ykblshift\z@
+  \ltj@tablshift\z@\ltj@tkblshift\z@
+}%
 \def\@@picture<#1>(#2,#3)(#4,#5){%
-  \save@ybaselineshift\ybaselineshift
-  \save@tbaselineshift\tbaselineshift
-  \iftdir
-    \if#1y\let\box@dir\yoko
-      \@picwd=#3\unitlength \@picht=#2\unitlength
-      \@tempdima=#5\unitlength \@tempdimb=#4\unitlength
-    \else\let\box@dir\tate
-      \@picwd=#2\unitlength \@picht=#3\unitlength
-      \@tempdima=#4\unitlength \@tempdimb=#5\unitlength
+  \edef\ltj@@pic@save@blshift{%
+    \noexpand\ltj@yablshift\the\ltj@yablshift\noexpand\relax
+    \noexpand\ltj@ykblshift\the\ltj@ykblshift\noexpand\relax
+    \noexpand\ltj@tablshift\the\ltj@tablshift\noexpand\relax
+    \noexpand\ltj@tkblshift\the\ltj@tkblshift\noexpand\relax
+  }%
+  \bgroup\let\box@dir\relax
+  \if #1z\relax
+    \ifnum\ltjgetparameter{direction}=3 \relax
+      \let\box@dir\utod
     \fi
   \else
-    \if#1t\let\box@dir\tate
-      \@picwd=#3\unitlength \@picht=#2\unitlength
-      \@tempdima=#5\unitlength \@tempdimb=#4\unitlength
-    \else\let\box@dir\yoko
-      \@picwd=#2\unitlength \@picht=#3\unitlength
-      \@tempdima=#4\unitlength \@tempdimb=#5\unitlength
+    \if #1y\relax     \let\box@dir\yoko
+    \else\if #1t\relax\let\box@dir\tate
+    \else\if #1d\relax\let\box@dir\dtou
+    \else\if #1u\relax\let\box@dir\utod
+    \fi\fi\fi\fi
+  \fi
+  \ifx\box@dir\relax
+    \ifcase\ltjgetparameter{direction}
+       \or   \let\box@dir\dtou
+       \or\or\let\box@dir\tate
+       \or   \let\box@dir\yoko
+       \else \let\box@dir\utod
     \fi
   \fi
+  \@picwd=#2\unitlength \@picht=#3\unitlength
   \setbox\@picbox\hbox to\@picwd\bgroup\box@dir
-  \hskip-\@tempdima\lower\@tempdimb\hbox\bgroup
-  \ybaselineshift\z@ \tbaselineshift\z@
+  \hskip-#4\unitlength\lower#5\unitlength\hbox\bgroup
+  \ltj@@pic@reset@blshift
   \ignorespaces}
 \def\endpicture{%
   \egroup\hss\egroup
-  \ht\@picbox\@picht \wd\@picbox\@picwd \dp\@picbox\z@
+  \setbox0=\hbox{\box@dir%
+    \ltjsetht\@picbox\@picht \ltjsetdp\@picbox\z@
+  }%
+  \@tempswafalse
+  \ifnum\ltjgetparameter{direction}=3  \@tempswatrue\fi
+  \ifnum\ltjgetparameter{direction}=11  \@tempswatrue\fi
+  \if@tempswa
+    \ifx\box@dir\yoko % この場合だけ垂直位置補正が必要
+     \ltjsetht\@picbox\dimexpr\ltjgetht\@picbox+\ltjgetdp\@picbox\relax
+      \ltjsetdp\@picbox\z@
+    \fi
+  \fi
   \mbox{\box\@picbox}%
-  \ybaselineshift\save@ybaselineshift
-  \tbaselineshift\save@tbaselineshift}
+  \egroup\ltj@@pic@save@blshift}
 \let\org@put\put
-\def\put{\ybaselineshift\z@\tbaselineshift\z@\org@put}
+\def\put{\ltj@@pic@reset@blshift\org@put}
 \let\org@line\line
-\def\line{\ybaselineshift\z@\tbaselineshift\z@\org@line}
+\def\line{\ltj@@pic@reset@blshift\org@line}
 \let\org@vector\vector
-\def\vector{\ybaselineshift\z@\tbaselineshift\z@\org@vector}
+\def\vector{\ltj@@pic@reset@blshift\org@vector}
 \let\org@dashbox\dashbox
-\def\dashbox{\ybaselineshift\z@\tbaselineshift\z@\org@dashbox}
+\def\dashbox{\ltj@@pic@reset@blshift\org@dashbox}
 \let\org@oval\oval
-\def\oval{\ybaselineshift\z@\tbaselineshift\z@\org@oval}
+\def\oval{\ltj@@pic@reset@blshift\org@oval}
 \let\org@circle\circle
-\def\circle{\ybaselineshift\z@\tbaselineshift\z@\org@circle}
+\def\circle{\ltj@@pic@reset@blshift\org@circle}
 
 %%% rensuji
 \newif\ifnot@advanceline
diff --git a/test/test56-lltjext-picture.pdf b/test/test56-lltjext-picture.pdf
new file mode 100644 (file)
index 0000000..f7c0d44
Binary files /dev/null and b/test/test56-lltjext-picture.pdf differ
diff --git a/test/test56-lltjext-picture.tex b/test/test56-lltjext-picture.tex
new file mode 100644 (file)
index 0000000..4d0a8ce
--- /dev/null
@@ -0,0 +1,109 @@
+%#!luajitlatex
+\ifdefined\directlua
+\documentclass[twocolumn]{ltjarticle}
+\usepackage{lltjext}
+\usepackage[]{xcolor}
+\else
+\documentclass[twocolumn]{jarticle}
+\usepackage{plext}
+\usepackage[dvipdfmx]{xcolor}
+\fi
+\usepackage[margin=20mm]{geometry}
+\unitlength6mm\fboxsep0mm
+
+
+\def\TEST#1#2#3{%
+  \hbox{#1\color{#3}%
+    \vrule width 150pt height .2pt depth .2pt\kern-150pt
+    \normalsize あいうABCxyz%
+    \fbox{\begin{picture}<#2>(5,4)(1,2)
+      \put(0,0){\circle*{0.2}}
+      \put(0,0){\vector(0,1){1}}
+      \put(1,0){\makebox(0,0)[l]{\scriptsize$x$}}
+      \put(0,1){\makebox(0,0)[b]{\scriptsize$y$}}
+      \put(1,2){\circle{0.2}}
+      \put(1,2){\vector(0,1){4}}
+      \put(1,2){\makebox(0,0)[lb]{\scriptsize\tt 周囲:\string#1,本環境:#2}}
+      \thicklines
+      \put(1,2){\vector(1,0){5}}
+      \put(0,0){\vector(1,0){1}}
+    \end{picture}}}}
+\begin{document}
+
+\parindent0pt
+\TEST{\yoko}{}{green!50!black}
+\vfill
+\TEST{\yoko}y{blue}
+\vfill
+\TEST{\yoko}t{red}
+\vfill
+
+\newpage
+\TEST{\tate}{}{green!50!black}
+\vfill
+\TEST{\tate}y{blue}
+\vfill
+\TEST{\tate}t{red}
+\vfill
+
+\ifdefined\directlua\else\end{document}\fi
+
+\newpage
+
+\TEST{\yoko}{}{green!50!black}
+\vfill
+\TEST{\yoko}d{purple}
+\vfill
+\TEST{\yoko}u{blue!50!green}
+\vfill
+
+\newpage
+
+\TEST{\tate}{}{green!50!black}
+\vfill
+\TEST{\tate}d{purple}
+\vfill
+\TEST{\tate}u{blue!50!green}
+\vfill
+
+%________
+\newpage
+
+\parindent0pt
+\TEST{\dtou}{}{green!50!black}
+\vfill
+\TEST{\dtou}y{blue}
+\vfill
+\TEST{\dtou}t{red}
+\vfill
+
+\newpage
+\TEST{\utod}{}{green!50!black}
+\vfill
+\TEST{\utod}y{blue}
+\vfill
+\TEST{\utod}t{red}
+\vfill
+
+\ifdefined\directlua\else\end{document}\fi
+
+\newpage
+
+\TEST{\dtou}{}{green!50!black}
+\vfill
+\TEST{\dtou}d{purple}
+\vfill
+\TEST{\dtou}u{blue!50!green}
+\vfill
+
+\newpage
+
+\TEST{\utod}{}{green!50!black}
+\vfill
+\TEST{\utod}d{purple}
+\vfill
+\TEST{\utod}u{blue!50!green}
+\vfill
+
+
+\end{document}