TransWikia.com

Baseline Problem with zref & textblock (north west vs baseline)

TeX - LaTeX Asked on February 19, 2021

Zref does calculate the coordinate of north west of P1 (= baseline of "some text"), which in my case is approx (50mm, 274mm)

enter image description here

so if i make "uuuuuu" in Textblock with the same coordinates, it also puts "uuuuu" in north west. Then the baseline is not the same. The result seems like it shiftet.

My simple question: how can i force zref and textblock operate with the baseline and not north west?

documentclass[12pt,oneside,german]{article}  
usepackage[T1]{fontenc} 
usepackage[utf8]{inputenc}
usepackage{xcolor}
usepackage[paperwidth=210 mm,paperheight=297 mm,left=50mm,top=20mm]{geometry} 
usepackage[absolute,overlay]{textpos} 
usepackage{zref-abspos}  
usepackage{tcolorbox}  
%tcbuselibrary{skins,breakable}


topskip=0pt  
setlength{parindent}{0pt} % = global noindent 
renewcommand{baselinestretch}{1.3} 

newcommand{myfunction}[1]{%
zsavepos{P1}% Store the current position as #1
#1%
}

makeatletter
newcommanddimtomm[1]{%
strip@ptdimexpr 0.351459804dimexpr#1relaxrelax 
}
makeatother

textblockorigin{0mm}{297mm}
begin{document}
some text

myfunction{P1} 

vspace*{5mm}
The coordinate of P1 is: (dimtomm{thedimexpr zposx{P1}sp relax} mm,dimtomm{thedimexpr zposy{P1}sp relax} mm)

begin{textblock*}{thetextwidth}(49.9994mm,-274.40306mm)%
    textcolor{red}{uuuuuuu}
end{textblock*} 

 

end{document}

One Answer

I added a noindent before zsavepos{P1} inside the definition of myfunction so as to save the position P1 after starting a new paragraph (which was done by myfunction's first argument in your code, and caused the saved position to be above the baseline of the typeset text corresponding to #1).

I also added [0,1] after begin{textblock*}{thetextwidth} in order to vertically shift the block continaing uuuuuuu by its height (otherwise, its upper left corner would be at P1's baseline, not its lower left one).

documentclass{article}
usepackage{xcolor}
usepackage[paperwidth=210 mm,paperheight=297 mm,left=50mm,top=20mm]{geometry}
usepackage[absolute,overlay]{textpos}
usepackage[savepos]{zref}

topskip=0pt
setlength{parindent}{0pt} % = global noindent
renewcommand{baselinestretch}{1.3}

newcommand{myfunction}[1]{%
  noindentzsavepos{P1}% Store the current position as #1
  #1%
}

textblockorigin{0mm}{297mm}

begin{document}
some text

myfunction{P1}

begin{textblock*}{textwidth}[0,1](zposx{P1}sp,-zposy{P1}sp)%
  textcolor{red}{uuuuuuu}
end{textblock*}

% With multiline text
begin{textblock*}{textwidth}[0,1](zposx{P1}sp,-zposy{P1}sp)%
  begin{minipage}[t]{textwidth}
  color{blue}... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  end{minipage}
end{textblock*}

end{document}

enter image description here

Correct answer by frougon on February 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP