关联命令返回数组

关联命令返回数组

我正在尝试从外部程序获取字符串,如本例所示:

\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}

相关内容