`textpos` 的框大小不符合预期

`textpos` 的框大小不符合预期

更新我已经根据以下发现发布了一个 LaTeX 样式文件, CXLTX 绝对位置,(初期)的一部分CXLTX 风格系列,这样可以更轻松地在页面上精确定位单行代码。拉取请求:太棒了!

我正在尝试使用 CSS 定位文本position: absolute,发现文本位置这个包基本上工作得很好。在文档中他们说(p4)“由环境定位的框\textblock与里面的文本块(或其他材料)紧密贴合”,但是当我尝试

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

我得到的是

在此处输入图片描述

因此,虽然盒子的右边缘正确定位在 500(十分之一毫米)处,而顶部边缘正确定位在 0、200 和 400 处,并且盒子的下边缘确实像广告中说的那样紧紧包裹在下降部周围,但盒子仍然有 8 毫米高——我怎样才能让它们像广告中说的那样包裹呢?

答案1

现在这很简单...有时写下一个问题会导致你解决问题。记录如下:

我错误地认为将某些东西放入 中textpos textblock就像将东西放入 页面或 中一样minipage,即段落“跳过”会被默默省略。

并非如此。

首先,设置

\setlength{\parskip}{0pt}

降低了箱子的高度;然后,

\setlength{\parskip}{-\baselineskip}

结果是:

在此处输入图片描述

这有点违反直觉——我的意思是,段落之间的间距应该等于‘段落上方零空白’,不是吗?

笔记在现实世界中,您不会希望将\parskip其全局设置为此处显示的令人惊讶的值,而是使其在textblock环境内部本地出现(并且可能将其作为新的宏)。

更新作为后续,我定义了一个方便的宏,简化了文本的绝对定位。它在这里:

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

现在,当你这样做

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

(在与上述问题中所示的相同文档设置中)你得到

在此处输入图片描述

左下角的gX显示文本确实已正确定位(右边缘的基线从文档边缘测量)X( 30mm, 40mm )

请注意,为了演示起见,这里定义的支柱具有可见的宽度;而且,它的高度和深度已经过精心设计,以匹配此处使用的特定字体尺寸 - 当您切换到另一种字体时,很可能和都\textposstrutheight必须depth重新定义。

相关内容