我正在尝试在直接 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 计数器提供类似的功能。