Unerwartete Boxgrößen mit „textpos“

Unerwartete Boxgrößen mit „textpos“

AKTUALISIERENIch habe seitdem eine LaTeX-Style-Datei veröffentlicht, die auf den folgenden Erkenntnissen basiert. CXLTX Position Absolut, Teil der (beginnenden)CXLTX Style Kollektion, wodurch sich Einzeiler leichter präzise auf der Seite positionieren lassen.Pull-Anfragen: großartig!

Ich versuche, Text à la CSS zu positionieren position: absoluteund fand dietextposPaket, das grundsätzlich großartig funktioniert. In der Dokumentation heißt es (S. 4), dass „die Box, die von der \textblockUmgebung positioniert wird, eng an den Textblock (oder anderes Material) darin anpasst“, aber wenn ich versuche

\documentclass[a5paper]{memoir}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setlength{\parskip}{\baselineskip}
\setlength{\parindent}{0pt}

\usepackage[absolute]{textpos}
\setlength{\TPHorizModule}{0.1mm}
\setlength{\TPVertModule}{0.1mm}
\textblockorigin{0mm}{0mm}

% not needed, but makes for easier measuring:
\usepackage[top-left]{pagegrid}

\begin{document}

\TPshowboxestrue
\begin{textblock}{150}[1,0](500,000)\flushright helo\end{textblock}
\begin{textblock}{150}[1,0](500,200)\flushright world\end{textblock}
\begin{textblock}{150}[1,0](500,400)\flushright gX\end{textblock}
\begin{textblock}{150}[1,0](700,400)\flushright .\end{textblock}

\end{document}


\setlength{\parskip}{0pt}

\setlength{\parskip}{-\baselineskip}

was ich bekomme ist

Bildbeschreibung hier eingeben

Obwohl also die rechten Kanten der Kästen korrekt bei 500 (Zehntel mm) und die oberen Kanten als solche korrekt bei 0, 200 bzw. 400 positioniert sind und die unteren Kanten der Kästen wie angegeben eng um die Unterlängen gewickelt sind, sind die Kästen immer noch 8 mm hoch – wie kann ich sie wie angegeben umwickeln?

Antwort1

das war jetzt einfach ... manchmal führt das Aufschreiben einer Frage zur Lösung eines Problems. Zur Info:

ich war fälschlicherweise davon ausgegangen, dass das Einfügen von etwas in ein textpos textblockähnlicher Weise funktioniert wie das Einfügen von Inhalten auf eine Seite oder in ein minipage, d. h. Absatzüberspringungen würden stillschweigend ausgelassen.

nicht so.

Erstens, Einstellung

\setlength{\parskip}{0pt}

brachte eine Reduzierung der Kastenhöhen; dann

\setlength{\parskip}{-\baselineskip}

ergab dies:

Bildbeschreibung hier eingeben

was irgendwie kontraintuitiv ist – ich meine,nullAbstand zwischen Absätzensollengleich „Null Leerzeichen über dem Absatz“, oder?

Notiz\parskipin der realen Welt würden Sie den hier angezeigten überraschenden Wert nicht global festlegen , sondern ihn lieber lokal innerhalb der textblockUmgebungen erscheinen lassen (und dies möglicherweise als neues Makro wandeln).

Aktualisierenals Follow-up habe ich ein praktisches Makro definiert, das die absolute Positionierung von Text vereinfacht. Hier ist es:

\newdimen\textposstrutheight
\newdimen\textposstrutwidth
\newdimen\textposstrutdepth
\newdimen\textposstrutlength
\textposstrutwidth=0.5mm
\textposstrutheight=2.7mm
\textposstrutdepth=2.8mm
\textposstrutlength=\dimexpr\textposstrutheight+\textposstrutdepth
\newcommand{\textposstrut}{{\color{blue}\vrule height\textposstrutheight width\textposstrutwidth depth\textposstrutdepth}}

\newcommand{\placeflushright}[4]{%
  \begin{textblock}{#1}[1,0.5](#2,#3)\flushright{\textposstrut}#4\end{textblock}%
  }

jetzt, wenn Sie

\begin{textblock}{150}[1,0.5](500,000)\flushright\textposstrut helo\end{textblock}
\begin{textblock}{150}[1,0.5](500,200)\flushright\textposstrut world\end{textblock}
\begin{textblock}{150}[1,0.5](500,400)\flushright\textposstrut gX\end{textblock}
\begin{textblock}{150}[1,0.5](700,400)\flushright\textposstrut .\end{textblock}

\placeflushright{150}{300}{400}{gX}

(innerhalb desselben Dokument-Setups wie in der Frage oben gezeigt) erhalten Sie

Bildbeschreibung hier eingeben

wobei das gXunten links zeigt, dass der Text tatsächlich richtig positioniert wurde (die Grundlinie der rechten Kante des wird Xvom ( 30mm, 40mm )Rand des Dokuments aus gemessen).

Beachten Sie, dass die Strebe, wie sie hier definiert ist, zu Demonstrationszwecken eine sichtbare Breite hat; außerdem wurden ihre Höhe und Tiefe sorgfältig angepasst, um den hier verwendeten spezifischen Schriftabmessungen zu entsprechen. Wenn Sie zu einer anderen Schriftart wechseln, müssen wahrscheinlich sowohl als \textposstrutheightauch - depthneu definiert werden.

verwandte Informationen