电子表格中的文本替换

电子表格中的文本替换

类似于此问题我想使用电子表格区域内的函数,但我不想在单独的文件中使用它,而只是简化使用和可读性。

\newcommand不幸的是,使用\def\edef不会将文本扩展到该区域,因此文本不能被 Spreadtab 正常识别。

我的第一个想法是能够制作一个文本宏,例如在 C 语言编程中#define

我当前处于非工作状态的命令是这样的:

\newcommand*{\pos}[4]{ :={#1} &@ #2 &@ #3 & :={#4}\,\EUR & :={[-4,0]*[-1,0]}\,\EUR\\}

这正是我想要插入到电子表格区域的内容。它对应于表格的一行。使用时的pos输出

\pos{5}{text}{description}{10}

那么

:=5    @text    @description   10€       :=[-4,0]*[-1,0]€

而不是我将文本直接插入到电子表格区域时得到的预期行:

5.00   text     description    10.00€    50.00€

是否有可能创建类似 C 宏的东西,将文本插入“编译”之前?或者是否有任何其他命令可以用来简化使用,而不必一次又一次地编写所有格式问题?

提前致谢。

答案1

如果表格主体包含\+{<argument>},则<argument>展开一次:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{spreadtab,xpatch,eurosym}
\def\EUR{\geneuro}
\makeatletter
\def\spreadtab@ii{\IfSubStr\ST@tab{\noexpand\+}{\expandafter\spreadtab@iii\ST@tab\@nil}{}}
\def\spreadtab@iii#1\+#2#3\@nil{\edef\ST@tab{\unexpanded{#1}\unexpanded\expandafter{#2#3}}\spreadtab@ii}%
\xpretocmd\spreadtab@i\spreadtab@ii{}{}
\makeatother
\begin{document}
\newcommand*\pos[4]{ :={#1} &@ #2 &@ #3 & :={#4}\,\EUR & :={[-4,0]*[-1,0]}\,\EUR\\}

\begin{spreadtab}{{tabular}{*5c}}\hline
    \+{\pos{5}{text}{description}{10}}
    \+{\pos{9}{foo}{bar}{31}}\hline
\end{spreadtab}
\end{document}

相关内容