Die `-3\lineskip` sind eher Zufall, wie man bereits mit
\lineskip=0pt
\newbox\mybox%
\newbox\yourbox%
\newbox\ourbox%
\newdimen\raisefactor%
\newdimen\shiftfactor%
\setbox\mybox=\vbox{\hsize=4cm a bcd ef g h ij klmab cdefghijklm abc defghij k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a b
c d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j j k l m a b c d e f g h i j k l m k l m k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i kj k l m a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l ma b c d e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l m }%
\setbox\yourbox=\vtop{\vbox{\copy\mybox}}%
\setbox\ourbox=\vtop{\vbox{\copy\mybox}}%
\the\ht\yourbox \the\wd\yourbox%
\hskip1cm\the\ht\ourbox \the\wd\ourbox%
\raisefactor=\the\ht\yourbox%
\shiftfactor=\the\wd\yourbox%
\hrule%
\vtop{\vtop{\unvbox\yourbox}\vskip-3\lineskip \vskip-1\raisefactor%
\hskip1\shiftfactor\vtop{\unvbox\ourbox}}%
\hrule%
\bye%
![-3\lineskip ist nicht korrekt][1]
erkennen kann. Tatsächlich hängt das sehr von der tatsächlichen Höhe der ersten bzw. der tatsächlichen Tiefe der letzten Zeile in der Box ab:
\newbox\mybox%
\newbox\yourbox%
\newbox\ourbox%
\newdimen\raisefactor%
\newdimen\shiftfactor%
\lineskip0pt
\setbox\mybox=\vbox{\hsize=4cm \strut a bcd ef g h ij klmab cdefghijklm abc defghij k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a b
c d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j j k l m a b c d e f g h i j k l m k l m k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i kj k l m a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l ma b c d e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l m\strut }%
\setbox\yourbox=\vtop{\vbox{\copy\mybox}}%
\setbox\ourbox=\vtop{\vbox{\copy\mybox}}%
\the\ht\yourbox\space \the\wd\yourbox%
\hskip1cm\the\ht\ourbox\space \the\wd\ourbox%
\raisefactor=\the\ht\yourbox%
\shiftfactor=\the\wd\yourbox%
\hrule%
\vbox{\vtop{\unvbox\yourbox}\vskip-\raisefactor\vskip-\dp\strutbox \hskip\shiftfactor
\vtop{\unvbox\ourbox}}%
\hrule%
\bye%
![\dp\strutbox ist schon besser][2]
Du musst also berücksichtigen, dass Boxen bei TeX nicht nur eine Höhe, sondern auch eine Tiefe haben, und Dir überlegen, wo denn nun eigentlich die Grundlinie verläuft.
Ich habe mich hier eines kleinen Tricks bedient, um diese Tiefe (und nebenbei auch die Höhe) eindeutig zu definieren. Ohne den Trick geht es in diesem Fall auch, weil man aufgrund der Verwendung von `\vbox` für `\mybox` die Tiefe der letzten Zeile von `\mybox` noch bestimmen kann:
\newbox\mybox%
\newbox\yourbox%
\newbox\ourbox%
\newdimen\raisefactor%
\newdimen\shiftfactor%
\lineskip0pt
\setbox\mybox=\vbox{\hsize=4cm a bcd ef g h ij klmab cdefghijklm abc defghij k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a b
c d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h
i j j k l m a b c d e f g h i j k l m k l m k l m a b c d e f g h i j k l m a
b c d e f g h i j k l m a bc d e f g h i j k l e f g h i kj k l m a b c d e f
g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l ma b c d e f g
h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i j k l m
a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l
m}%
\setbox\yourbox=\vtop{\vbox{\copy\mybox}}%
\setbox\ourbox=\vtop{\vbox{\copy\mybox}}%
\the\ht\yourbox\space \the\wd\yourbox%
\hskip1cm\the\ht\ourbox\space \the\wd\ourbox%
\raisefactor=\the\ht\yourbox%
\shiftfactor=\the\wd\yourbox%
\hrule%
\vbox{\vtop{\unvbox\yourbox}\vskip-\raisefactor\vskip-\dp\mybox \hskip\shiftfactor
\vtop{\unvbox\ourbox}}%
\hrule%
\bye%
![\dp\mybox ist noch besser][3]
Was passiert nun, wenn man `\lineskip` nicht auf 0pt setzt? Nun, dann hat man in der äußeren `\vbox` zwei aufeinanderfolgende Boxen, deren vertikaler Abstand geringer als `\lineskip` ist, weshalb `\lineskip` automatisch addiert wird. Also muss man `\lineskip` wieder abziehen:
\newbox\mybox%
\newbox\yourbox%
\newbox\ourbox%
\newdimen\raisefactor%
\newdimen\shiftfactor%
%\lineskip10pt
\setbox\mybox=\vbox{\hsize=4cm a bcd ef g h ij klmab cdefghijklm abc defghij k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a b
c d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h
i j j k l m a b c d e f g h i j k l m k l m k l m a b c d e f g h i j k l m a
b c d e f g h i j k l m a bc d e f g h i j k l e f g h i kj k l m a b c d e f
g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l ma b c d e f g
h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i j k l m
a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l
m}%
\setbox\yourbox=\vtop{\vbox{\copy\mybox}}%
\setbox\ourbox=\vtop{\vbox{\copy\mybox}}%
\the\ht\yourbox\space \the\wd\yourbox%
\hskip1cm\the\ht\ourbox\space \the\wd\ourbox%
\raisefactor=\the\ht\yourbox%
\shiftfactor=\the\wd\yourbox%
\hrule%
\vbox{\vtop{\unvbox\yourbox}\vskip-\raisefactor\vskip-\dp\mybox\vskip-\lineskip \hskip\shiftfactor
\vtop{\unvbox\ourbox}}%
\hrule%
\bye%
![\lineskip ist auch dann zu beachten][4]
Das funktioniert auch dann noch, wenn `\lineskip` einen vom Standardwert 1pt abweichenden Wert hat, wenn man beispielsweise im letzten Beispiel die auskommentierte Zeile aktiviert.
Und wieso waren nun `-3\lineskip` in Deinem Beispiel zufällig richtig? Waren sie gar nicht, sie waren nur zufällig fast richtig:
\newbox\mybox%
\newbox\yourbox%
\newbox\ourbox%
\newdimen\raisefactor%
\newdimen\shiftfactor%
\setbox\mybox=\vbox{\hsize=4cm a bcd ef g h ij klmab cdefghijklm abc defghij k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a b
c d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h
i j j k l m a b c d e f g h i j k l m k l m k l m a b c d e f g h i j k l m a
b c d e f g h i j k l m a bc d e f g h i j k l e f g h i kj k l m a b c d e f
g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l ma b c d e f g
h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i j k l m
a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l
m}%
\setbox\yourbox=\vtop{\vbox{\copy\mybox}}%
\setbox\ourbox=\vtop{\vbox{\copy\mybox}}%
\the\ht\yourbox\space \the\wd\yourbox%
\hskip1cm\the\ht\ourbox\space \the\wd\ourbox%
\raisefactor=\the\ht\yourbox%
\shiftfactor=\the\wd\yourbox%
\hrule%
\vbox{\vtop{\unvbox\yourbox}\vskip-\raisefactor\vskip-\dp\mybox\vskip-\lineskip \hskip\shiftfactor
\vtop{\unvbox\ourbox}}%
\hrule%
\dimen255=\dp\mybox
\advance\dimen255 by \lineskip
\the\dp\mybox+\the\lineskip=\the\dimen255
\bye%
![Hier der Wert für die tatsächlich korrekte Verschiebung][5]
Die minimale Abweichung von weniger als 0,06 pt ist schlicht in diesem Fall nicht erkennbar (durch Rundungsfehler im Viewer kann sie aber bei schlechter Auflösung tatsächlich zufällig auch erkennbar werden).
Übrigens ist das ganze einfacher, wenn man für die horizontale Anordnung eben keine `\vbox`, sondern die dafür vorgesehene `\hbox` verwendet. Dann hat man beispielsweise das `\lineskip`-Problem nicht:
\newbox\mybox
\newbox\yourbox
\newbox\ourbox
\setbox\mybox=\vbox{\hsize=4cm \strut a bcd ef g h ij klmab cdefghijklm abc defghij k l m a b c d e f g h i j k l m a b c d e f g h i j k l m a b
c d e f g h i j k l e f g h i j k l m a b c d e f g h i j k l m a bc d e f g h
i j j k l m a b c d e f g h i j k l m k l m k l m a b c d e f g h i j k l m a
b c d e f g h i j k l m a bc d e f g h i j k l e f g h i kj k l m a b c d e f
g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l ma b c d e f g
h i j k l m a b c d e f g h i j k l m a bc d e f g h i j k l e f g h i j k l m
a b c d e f g h i j k l m a bc d e f g h i j j k l m a bc d e f g h i j k l
m\strut}%
\setbox\yourbox=\vtop{\vbox{\copy\mybox}}%
\setbox\ourbox=\vtop{\vbox{\copy\mybox}}%
\the\ht\yourbox\space \the\wd\yourbox
\hskip1cm\the\ht\ourbox\space \the\wd\ourbox
\hrule
\hbox{\vtop{\unvbox\yourbox}\hskip 1cm
\vtop{\unvbox\ourbox}}%
\hrule
\bye
![mit \hbox geht es einfacher][6]
Ebenso muss man sich dann keine Gedanken darüber machen, was denn eigentlich passiert, wenn man in dem Beispiel `\parskip` auf einen von 0pt abweichenden negativen oder positiven Wert setzt und dieser womöglich auch noch *glue* enthält.
LaTeX-Anwendern sei übrigens empfohlen, nicht `\vbox` und `\vtop`, sondern schlicht `\parbox` zu verwenden. Ggf. kann für diese auch das Paket [`adjustbox`](http://www.ctan.org/pkg/adjustbox) nützlich sein, wenn es geht, Boxen nebeneinander auszurichten. Das Problem, dass man sich überlegen muss, wo denn nun eigentlich die Grundlinie verläuft, wird damit allerdings nicht komplett beseitigt. Das betrifft neben plainTeX-Anwendern auch die Anwender aller anderen TeX-Formate.TeX-Formate.
[1]: http://texwelt.de/wissen/upfiles/test1_5.png
[2]: http://texwelt.de/wissen/upfiles/test2_5.png
[3]: http://texwelt.de/wissen/upfiles/test3_4.png
[4]: http://texwelt.de/wissen/upfiles/test4_2.png
[5]: http://texwelt.de/wissen/upfiles/test6_2.png
[6]: http://texwelt.de/wissen/upfiles/test5_2.png