我想在LaTeX中编写一个命令,它需要一个字符串如8:00A,并将其转换为分钟数,作为使用TikZ绘制课程计划的脚本的一部分。然而,我遇到了一些问题 - 看起来LaTeX实际上并没有评估一个命令的内容。LaTeX立即评估
我的命令是目前:
\newcommand{\timetominutes}[1]{
\IfSubStr{#1}{P}{720}{0}+\IfSubStr{#1}{P}{\StrBetween{#1}{:}{P}}{\StrBetween{#1}{:}{A}}+60*\StrBefore{#1}{:}
}
如果您打印输出的文字时,它会正确计算从午夜的分钟数。但是,如果在另一个函数中使用,显然它不会实际上运行这些命令中的任何一个 - 它只是返回包含这些命令的文本。所以,如果我写:
\myfunc{\timetominutes{8:00A}}
而不是\myfunc
看到类似0+00+60*8
有用的,它看到\IfSubStr{8:00A}{P}{720}{0}+\IfSubStr{8:00A}{P}{\StrBetween{8:00A}{:}{P}}{\StrBetween{8:00A}{:}{A}}+60*\StrBefore{8:00A}{:}
。这对我来说绝对是无用的,我看不出找到一种方法来强制LaTeX在主要命令之前执行子命令。我认为有办法做到这一点,但LaTeX文档很少,我似乎无法找到任何东西。
或者,如果有办法让LaTeX停止抱怨太多}
(当我有正确的号码时),那可以工作。
为什么在世界上你想在LaTeX内部做到这一点?你可以写一些其他语言的脚本来读取字符串,处理,然后输出到TikZ。 – 2010-10-25 17:35:46
听起来像luatex的工作。对不起,我无法在Lua中提供解决方案。我相信别人可以。 – Mica 2010-10-25 17:59:27
我受到TikZ语法的可扩展性的启发,并认为我可以创建类似可扩展的东西。事实证明,我错了。 – Ethan 2010-10-25 18:11:18