![关联命令返回数组](https://linux22.com/image/265207/%E5%85%B3%E8%81%94%E5%91%BD%E4%BB%A4%E8%BF%94%E5%9B%9E%E6%95%B0%E7%BB%84.png)
我正在尝试从外部程序获取字符串,如本例所示:
\documentclass{article}
\usepackage{fontspec}
\usepackage{xunicode}
\newcounter{verse}
\stepcounter{verse}
\immediate\write18{/home/rpinson/bas/tex/diatheke2tex "Jn 3:16" "FreMartin" "\roman{verse}" "\jobname.verses"}
\begin{document}
\input{\jobname.verses}
\versei
\end{document}
哪里diatheke2tex
:
#!/bin/bash
REF="$1"
VERSION="$2"
ID="$3"
FILE="$4"
echo "\\newcommand\\verse${ID}{%" >> $FILE
diatheke -o plain -b "$VERSION" -k "$REF" | \
head -n -1 | \
sed -e 's/^[^:]\+ [0-9:]\+://' >> $FILE
echo "}" >> $FILE
这\versei
有点像 hack,因为宏名称中不能使用空格和数字。显然,这不是一个合适的解决方案……
我如何构建某种关联数组,将引用(如Jn 3:16
)与命令的结果(在本例中Car Dieu a tant aimé le monde, qu'il a donné son Fils unique, afin que quiconque croit en lui ne périsse point, mais qu'il ait la vie éternelle.
)关联起来?
答案1
其实,宏名(csname)中可以使用空格和数字,见下面关联引用的定义及使用示例:
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\expandafter\def\csname[Jn 3:16]\endcsname{Car Dieu a tant aimé le monde\dots}
\begin{document}
\csname[Jn 3:16]\endcsname
\end{document}