
不久前,我嘗試figure*
為 Plain TeX 定義類似的東西。這導致了錯誤的柱高。
有提示要記住vsize,所以我嘗試了這個。請看下面的MWE:
% For Plain LuaTeX
\catcode`@=11
\raggedbottom
\newdimen\fullhsize
\newdimen\columnsep
\columnsep 1cm
\fullhsize\hsize
\advance\hsize-\columnsep
\divide\hsize\tw@
\newdimen\fullvsize
\fullvsize\vsize
\def\fullline{\hbox to\fullhsize}
\def\makeheadline{\vbox to\z@{\vskip-22.5\p@
\fullline{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
\def\makefootline{\baselineskip24\p@\lineskiplimit\z@
\fullline{\the\footline}}
% Twocolumn output
\newif\if@firstcolumn \@firstcolumntrue
\newbox\firstcolumn
\output={\ifvoid\widetopins\else%%%%%%%% try to change vsize
\global\advance\vsize-\ht\widetopins
\global\advance\vsize-\dp\widetopins\fi
\if@firstcolumn \global\setbox\firstcolumn=\columnbox
\global\@firstcolumnfalse
\else
\doubleformat \global\@firstcolumntrue\fi
\ifnum\outputpenalty>-20000 \else\dosupereject\fi}
\def\doubleformat{\shipout\vbox{
\makeheadline
\ifvoid\widetopins\else\fullline{\box\widetopins}\fi
\fullline{\box\firstcolumn\hfil\columnbox} \makefootline}
\advancepageno
\global\vsize\fullvsize}% reset \vsize
\def\columnbox{\leftline{\pagebody}}
% like figure* in LaTeX
\newinsert\widetopins
\skip\widetopins\z@skip
\count\widetopins=0 %%%%%%%% to change vsize manually
\dimen\widetopins=.5\vsize
\def\widetopinsert{\p@gefalse\par\begingroup
\setbox\z@\vbox\bgroup\hsize\fullhsize}
\def\endwideinsert{\egroup
\insert\widetopins{\penalty100 % floating insertion
\splittopskip\z@skip
\splitmaxdepth\maxdimen \floatingpenalty\z@
\ifp@ge \dimen@\dp\z@
\vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
\else \box\z@\nobreak\bigskip\fi}\endgroup}
\def\mypicture{\vrule height 100pt depth 40pt width300pt}
\def\text{Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.}
\text\text\text
\widetopinsert
\centerline{\mypicture}
\endwideinsert
\text\text\text\text\text
\bye
正如您在圖片中看到的那樣,兩列都是錯誤的。兩者都進入底部邊距,第二個在頂部有空白。我做錯了什麼?怎樣才能\vsize
正確改變呢?