我想使用 来格式化今天的日期\directlua
。%
符号似乎有问题。我不知道如何让它工作。
以下示例中的两次尝试均会引发错误:
\documentclass{article}
\begin{document}
Today: \directlua{tex.print(os.date("%d.%m.%y"))}
Today: \directlua{tex.print(os.date("\%d.\%m.\%y"))}
\end{document}
答案1
有几种可能的解决方案。我能想到的最简单的两个是
定义宏
\percentchar
如下:\makeatletter\let\percentchar\@percentchar\makeatother
并用它来代替
%
的论点\directlua
:Today: \directlua{tex.print(os.date("\percentchar d.\percentchar m.\percentchar y"))}
\percentchar
当然,您可以自由地为这个宏想出一个更简洁的名字。加载
luacode
包并 (a) 使用其\luaexec
宏代替\directlua
并 (b) 将%
参数中的 的所有实例更改\luaexec
为\%
:Today: \luaexec{tex.print(os.date("\%d.\%m.\%y"))}
您可能已经猜到,的目的之一是简化 TeX 特殊字符(例如和
\luaexec
)的使用,同时仍允许扩展 (La)TeX 宏。%
#
完整的 MWE;我认为不需要截图:
\documentclass{article}
\usepackage{luacode} % for '\luaexec' macro
\makeatletter\let\percentchar\@percentchar\makeatother
\begin{document}
Today: \directlua{tex.sprint(os.date("\percentchar d.\percentchar m.\percentchar y"))},
Today: \luaexec{tex.sprint(os.date("\%d.\%m.\%y"))}
\end{document}