% xetexko-vertical.sty % % Copyright (c) 2013-2020 Dohyun Kim % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2006/05/20 or later. \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname ProvidesPackage\endcsname\relax\else \ProvidesPackage{xetexko-vertical} [2020/02/17 v2.23 Vertical environment for XeTeX-ko] \fi % do not veticalize headline/footline \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname selectfont\endcsname\relax % plain \protected\def\verticaltypesetting{% \dimen@\hsize\hsize\vsize\vsize\dimen@ \edef\plainoutput{\unexpanded{\dimen@\hsize\hsize\vsize\vsize\dimen@}% \unexpanded\expandafter{\plainoutput}}% \def\pagebody{\setbox\z@\vbox to\hsize{\boxmaxdepth=\maxdepth \pagecontents}\xetexko@rotatebox\z@\box\z@}% \maxdepth\z@ \XK@vertical@spacing} \else % latex \protected\def\verticaltypesetting{% \AtBeginDocument{\XK@vertical@spacing}% \maxdepth\z@ \dimen@\textwidth \textwidth\textheight \textheight\dimen@ \edef\@outputpage{% \unexpanded{\xetexko@rotatebox\@outputbox\textwidth\textheight}% \unexpanded\expandafter{\@outputpage}}% } \@onlypreamble\verticaltypesetting \fi \def\xetexko@rotatebox#1{% \ifvbox#1\count@\@ne\else\count@\z@\fi \dimen@\wd#1\dimen@ii\dimexpr\ht#1+\dp#1\relax \setbox#1\ifnum\count@=\@ne \vbox to\dimen@\bgroup\hbox to\dimen@ii\bgroup\hfil\else \hbox to\dimen@ii\bgroup\vbox to\dimen@\bgroup\fi \wd#1\z@ \ht#1\z@ \dp#1\z@ \special{x:gsave}\special{x:rotate -90}\box#1\special{x:grestore}% \ifnum\count@=\@ne\egroup\vfil\else\vfil\egroup\hfil\fi\egroup } % users can declare vertical EM size, which might be different from 1em. \newdimen\verticalem \def\XK@vertical@spacing{% \ifnum\verticalem > \z@ \def\XK@vert@half@em{.5\verticalem}% \else \def\XK@vert@half@em{.5em}% \fi \let\xk@horiz@precjkopenparen \precjkopenparen \let\xk@horiz@precjkcloseparen\precjkcloseparen \let\xk@horiz@precjkfullstop \precjkfullstop \ifx\precjkopenparen\relax\else \def\precjkopenparen {\leavevmode \ifx\empty\xetexkocharraise\else\raise\xetexkocharraise\fi \hbox \ifx\XKdisablecjksymbolspacing\empty \bgroup \else to\XK@vert@half@em \bgroup \hss \fi }% \fi \ifx\precjkcloseparen\relax\else \def\precjkcloseparen{\leavevmode \ifx\empty\xetexkocharraise\else\raise\xetexkocharraise\fi \hbox \ifx\XKdisablecjksymbolspacing\empty\else to\XK@vert@half@em \fi \bgroup}% \fi \ifx\precjkfullstop\relax\else \def\precjkfullstop {\leavevmode \ifx\empty\xetexkocharraise\else\raise\xetexkocharraise\fi \hbox \ifx\XKdisablecjksymbolspacing\empty\else to\XK@vert@half@em \fi \bgroup}% \fi \spaceskip\XK@vert@half@em plus\XK@vert@half@em\relax \parindent\XK@vert@half@em \parindent2\parindent } \protected\def\vertical#1{% \setbox\z@\vbox\bgroup \hsize=#1% \leftskip\z@ \rightskip\z@ \parindent\z@ \everypar{}% \XK@vertical@spacing } \protected\def\endvertical{% \egroup \dimen@\dimexpr\ht\z@+\dp\z@\relax \dimen@ii\dimexpr\wd\z@-\dp\z@\relax \setbox\z@\hbox{% \kern\dimexpr\ht\z@+0.5em\relax \wd\z@\z@ \ht\z@\z@ \dp\z@\z@ \special{x:gsave}% \special{x:rotate -90}% \box\z@ \special{x:grestore}}% \wd\z@\dimen@ \ht\z@\z@ \dp\z@\z@ \leavevmode \raise\dimen@ii\box\z@ } % horizontal box inside vertical typesetting \protected\def\horizontal#1{% \setbox\z@\vbox\bgroup \hsize=#1% \leftskip \z@ \rightskip\z@ \parindent\z@ \everypar {}% \spaceskip \fontdimen2\font plus \fontdimen3\font minus\fontdimen4\font \ifdefined\xk@horiz@precjkopenparen \let\precjkopenparen \xk@horiz@precjkopenparen \let\precjkcloseparen\xk@horiz@precjkcloseparen \let\precjkfullstop \xk@horiz@precjkfullstop \fi } \protected\def\endhorizontal{% \egroup \dimen@\dimexpr\ht\z@+\dp\z@\relax \dimen@ii\dimexpr\wd\z@+.5ex\relax \setbox\z@\hbox\bgroup \wd\z@\z@\ht\z@\z@\dp\z@\z@ \special{x:gsave}% \special{x:rotate 90}% \box\z@ \special{x:grestore}% \egroup \wd\z@\dimen@ \ht\z@\dimen@ii \dp\z@\z@ \fboxsep=-\fboxrule \leavevmode\lower.5ex\box\z@ } \protected\def\vertlatin#1{\leavevmode\lower0.5ex\hbox{\latinmarks #1}} \endinput %% example: %\newhangulfontfamily\myvertfont % [Script=Hangul,Vertical=RotatedGlyphs] % {HCR Dotum LVT} %\verticalem=1.05em %\begin{vertical}{12em}\myvertfont % 세로쓰기 영역. % #1 = 세로길이 %\end{vertical}