ifx 和 pdflastypos

ifx 和 pdflastypos

我没有完全理解\ifx命令如何处理类型。

\ifxpdflastypos位于零坐标时,应如何读取以下 def 才能使语句为真?

\def\nothingness{0}
\def\lastypos{\pdflastypos}

\ifx\lastypos\nothingness
  TRUE \newline
\else
  FALSE \newline
\fi

答案1

不,\ifx对于该定义来说将是错误的。TeX 并不真正相信类型。\ifx只是比较定义中的标记列表,并且标记0与标记不同\pdflastypos

\ifnum\pdflastypos=\nothingness\relax

测试结果为 true,因为\ifnum扩展了 token 来找到<number>

答案2

David Carlisle 已经回答了这个明确的问题。因此,这个答案增加了一个更完整的用例。\pdflastxpos并且\pdflastypos不能直接使用。之前\pdfsavepos必须调用并且位置在发货时可用。因此,值\pdflastxpos\pdflastypos需要写入辅助文件。然后在下一次 LaTeX 运行中,可以使用辅助文件中存储的值。包zref-savepos(项目的)为 记住引用中的值的功能zref提供了一个接口:\pdfsavepos

\documentclass{article}
\usepackage{zref-savepos}[2010/03/26]
\begin{document}
Somewhere\zsavepos{somewhere}

\zifrefundefined{somewhere}{%
  \typeout{Y-position: unknown}%
}{%
  \ifnum\zposy{somewhere}=0 %
    \typeout{Y-position: zero}%
  \else
    \typeout{Y-position: \zposy{somewhere}sp}%
  \fi
}
\end{document}

相关内容