Tamanhos de caixa inesperados com `textpos`

Tamanhos de caixa inesperados com `textpos`

ATUALIZARdesde então, publiquei um arquivo de estilo LaTeX com base nas descobertas abaixo, Posição CXLTX Absoluta, parte do (incipiente)Coleção Estilo CXLTX, o que facilita o posicionamento preciso de linhas simples na página.solicitações pull: incrível!

estou tentando posicionar o texto à la CSS position: absolutee encontrei oposição de textopacote que basicamente funciona muito bem. na documentação dizem (p4) que "a caixa que está posicionada pelo \textblockambiente se ajusta perfeitamente ao bloco de texto (ou outro material) dentro dela`, mas quando tento

\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}

o que eu recebo é

insira a descrição da imagem aqui

portanto, embora as bordas direitas das caixas estejam posicionadas corretamente em 500 (décimos mm) e as bordas superiores corretamente em, respectivamente, 0, 200 e 400, e as bordas inferiores das caixas envolvam firmemente os descendentes conforme anunciado , as caixas ainda têm 8 mm de altura - como posso embrulhá-las conforme anunciado?

Responder1

agora essa foi fácil... às vezes escrever uma pergunta leva você a resolver um problema. para constar:

eu tinha assumido incorretamente que colocar algo em um textpos textblockseria um pouco como colocar coisas em uma página ou em um minipage, ou seja, 'pular' parágrafo seria silenciosamente omitido.

não tão.

primeiro, configurando

\setlength{\parskip}{0pt}

trouxe redução da altura das caixas; então,

\setlength{\parskip}{-\baselineskip}

rendeu isso:

insira a descrição da imagem aqui

o que é meio contra-intuitivo - quero dizer,zeroespaço entre parágrafosdeveigual a 'zero espaço em branco acima do parágrafo', não?

Observaçãono mundo real, você não gostaria de definir \parskipglobalmente o valor surpreendente mostrado aqui, mas sim fazê-lo aparecer localmente, dentro dos textblockambientes (e talvez lançá-lo como uma nova macro).

Atualizarcomo acompanhamento, defini uma macro útil que simplifica o posicionamento absoluto do texto. aqui está:

\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}%
  }

agora, quando você fizer

\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}

(dentro da mesma configuração de documento mostrada na pergunta acima) você obtém

insira a descrição da imagem aqui

onde o gXno canto inferior esquerdo demonstra que o texto foi realmente posicionado corretamente (a linha de base da borda direita Xé ( 30mm, 40mm )medida a partir da borda do documento).

observe que a escora conforme definida aqui tem uma largura visível para fins de demonstração; além disso, sua altura e profundidade foram cuidadosamente adaptadas para corresponder às dimensões específicas da fonte usada aqui – quando você muda para outra fonte, é provável que ambas \textposstrutheighte - depthtenham que ser redefinidas.

informação relacionada