通过 directlua 格式化日期

通过 directlua 格式化日期

我想使用 来格式化今天的日期\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}

相关内容