我正在开发 TikZ-from-TeX-SX 包,特别是开发在 tikzpicture 环境中放置方程编号的代码。为此,我需要知道文本在页面上的水平起始和终止位置。通过查看几个图表,似乎左侧边距位于:\hoffset
+ 1in + \oddsidemargin
(但这\oddsidemargin
让我有点担心!),为了获得右侧边距,我添加了\textwidth
。
所以问题是:我如何可靠地找出我的左边距和右边距在哪里(比如说,从页面的左边缘测量)?
如果这很重要,那么我宁愿选择 TeX想他们比他们实际上也就是说,如果用户更改了某个分组的长度,从而暂时欺骗了 TeX,但在 TeX 真正将任何内容放到页面上之前,欺骗已经结束,那么我将加入 TeX 的梦幻世界。
另外,我想知道我在哪个页面上也很重要。在这种情况下,我可以运行两次 TeX 来弄清楚,因为我已经需要运行两次 TeX 来处理包中的其他内容。
(笔记:这个问题与 TikZ 完全无关)
答案1
\hoffset
+ 1in + \oddsidemargin
+\leftskip
并为右边距添加\textwidth
- \rightskip
。
对于展示材料,还有\displayindent
和\displaywidth
。
我还应该提到layout
包裹。
答案2
有zref
一个包可以获取页面布局或任何文本的位置的参考。
\documentclass{article}
\usepackage[user,pagelayout,savepos]{zref}
\begin{document}
\section{pagelayout}
During page shipout, \verb|\oddsidemargin| is
\zref[oddsidemargin]{thepage}sp. (You won't be fooled)
\section{savepos}
\zsavepos{leftanchor}\fbox{FOO}\zsavepos{rightanchor}
FOO begins at (\zposx{leftanchor}sp, \zposy{leftanchor}sp)
and ends at (\zposx{rightanchor}sp, \zposy{rightanchor}sp).
\end{document}