diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/dvipsk/tex/rotate.tex | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipsk/tex/rotate.tex')
-rw-r--r-- | Build/source/texk/dvipsk/tex/rotate.tex | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Build/source/texk/dvipsk/tex/rotate.tex b/Build/source/texk/dvipsk/tex/rotate.tex new file mode 100644 index 00000000000..27891ee95ee --- /dev/null +++ b/Build/source/texk/dvipsk/tex/rotate.tex @@ -0,0 +1,43 @@ +% +% These macros allow you to rotate or flip a \TeX\ box. Very useful for +% sideways tables or upsidedown answers. +% +% To use, create a box containing the information you want to rotate. +% (An hbox or vbox will do.) Now call \rotr\boxnum to rotate the +% material and create a new box with the appropriate (flipped) dimensions. +% \rotr rotates right, \rotl rotates left, \rotu turns upside down, and +% \rotf flips. These boxes may contain other rotated boxes. +% +\newdimen\rotdimen +\def\vspec#1{\special{ps:#1}}% passes #1 verbatim to the output +\def\rotstart#1{\vspec{gsave currentpoint currentpoint translate + #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation +\def\rotfinish{\vspec{currentpoint grestore moveto}}% gets back in synch +% +% First, the rotation right. The reference point of the rotated box +% is the lower right corner of the original box. +% +\def\rotr#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% + \hbox to\rotdimen{\hskip\ht#1\vbox to\wd#1{\rotstart{90 rotate}% + \box#1\vss}\hss}\rotfinish} +% +% Next, the rotation left. The reference point of the rotated box +% is the upper left corner of the original box. +% +\def\rotl#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% + \hbox to\rotdimen{\vbox to\wd#1{\vskip\wd#1\rotstart{270 rotate}% + \box#1\vss}\hss}\rotfinish}% +% +% Upside down is simple. The reference point of the rotated box +% is the upper right corner of the original box. (The box's height +% should be the current font's xheight, \fontdimen5\font, +% if you want that xheight to be at the baseline after rotation.) +% +\def\rotu#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% + \hbox to\wd#1{\hskip\wd#1\vbox to\rotdimen{\vskip\rotdimen + \rotstart{-1 dup scale}\box#1\vss}\hss}\rotfinish}% +% +% And flipped end for end is pretty ysae too. We retain the baseline. +% +\def\rotf#1{\hbox to\wd#1{\hskip\wd#1\rotstart{-1 1 scale}% + \box#1\hss}\rotfinish}% |