다중 열 출력에서 ​​일반 TeX에 해당하는 숫자* 정의

다중 열 출력에서 ​​일반 TeX에 해당하는 숫자* 정의

얼마 전에 저는 figure*Plain TeX와 같은 것을 정의하려고 했습니다. 이로 인해 열 높이가 잘못되었습니다.

(보다: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제대로 바뀔 수 있나요?

관련 정보