LuaLaTeX 和计数器

LuaLaTeX 和计数器

我正在尝试在直接 lua 块中使用扩展宏的值,但我不知道如何从带有括号的任何宏中获取值。

\directlua { tex.print(\value{footnote}} } 

它从来都不能像我期望的那样工作,我只想让它打印出计数器脚注的当前值。我需要转义括号吗?

一个不起作用的最小示例:

\documentclass[12pt, a4paper]{article}
\usepackage{geometry}
\geometry{a4paper}
\usepackage{graphicx}
\usepackage{epstopdf}
\begin{document}
\footnote{hello}
\directlua { tex.enableprimitives('',tex.extraprimitives()) }
\catcode `\{=1
\catcode `\}=2
\directlua { here = here or {}; here.foo = 5 }
\directlua { here = here or {}; tex.print(here.foo + 5) }
\directlua { tex.print(\value{footnote}} }
\end{document}

以及错误;

*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
(/usr/local/texlive/2010/texmf-dist/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
)
! LuaTeX error <\directlua >:1: unexpected symbol near '\'.
l.13 \directlua { tex.print(\value{footnote}}
                                              }
? 

\

答案1

\directlua { tex.print(\value{footnote}} }

缺少一个右括号)。但是你可以写:

\directlua { tex.print(\thefootnote)} 

至少对于数字脚注

答案2

\definenumber在 ConTeXt 中,由或创建的计数器\definestructurecounter可在 lua 端使用structure.counters.data表进行访问。这样,您就不必在 TeX 级别进行任何转换。您可以使用辅助函数来structure.counteres.value获取计数器的值。我不知道是否有任何 LaTeX 包为 LaTeX 计数器提供类似的功能。

相关内容