更新我已经根据以下发现发布了一个 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
重新定义。