我希望能够有一个类似这样的定义宏:
\def\testmacro[1]{[54.7],[74.1],[98.5]}
当我打电话的时候
\testmacro{2},
在一份文件中,
74.1
打印出来。这可能吗?
背景:
我正在编写一个 C++ 程序,它将数据导出到 TeX 文件。我有最多 20 个项目(但有时更少),它们有各种测量值,例如压力。此 TeX 文件将调用一个模板,该模板将指定实际打印不同数据的方式。在模板中,我将指定要打印第二项的压力这里。
我很想说:
\def\pressure1{54.7}
\def\pressure2{74.1}
等等,但 Tex 无法处理宏名称中的数字。有什么建议吗?
谢谢,本
答案1
您可以在命令名称中使用数字,只需间接或通过非标准 catcode 访问它们。
\newcount\zcount
\def\pressure{\afterassignment\zpressure\zcount}
\def\zpressure{\csname\string\pressure\the\zcount\endcsname}
\def\zdef#1#2#{\expandafter\def\csname\string#1#2\endcsname}
\zdef\pressure1{54.7}
\zdef\pressure2{74.1}
\zdef\pressure3{98.5}
Pressure 2 is \pressure2.
\bye
答案2
我的解决方案基于 Kpym 的回答
\documentclass[varwidth,border=7]{standalone}
\usepackage{pgfmath}
\begin{document}
\def\pressureData{{1.2, 3.3, 2.3 ,3.4}}
\def\pressure#1{\pgfmathparse{\pressureData[#1]}\pgfmathresult}
\pressure0
\pressure1
\pressure2
\pressure3
\end{document}