作者sppmg (sppmg)
看板LaTeX
标题[问题] 间接定义指令
时间Wed Oct 26 04:54:11 2016
抱歉,我实在想不到比较好的标题可以下。
我想做出一个指令,当有参数时赋值,没参数时显示数值。
以\atitle为例,下面是可行的。
\usepackage{xparse}
\DeclareDocumentCommand{\atitle}{g}{
\IfNoValueTF{#1}{
\ifx\undefined\@atitle\relax\else\@atitle\fi
}{\gdef\@atitle{#1}}
}
\atitle % \relax
\atitle{123} % == \gdef\@atitle{123}
\atitle % 123
% --------------------------------
但我要设定的参数很多,希望更简化一些,所以想做成下面这样:
\DeclareDocumentCommand{\docInfo}{m g}{
\IfNoValueTF{#2}{
\ifx{\@#1}\undefined
relex
\relax
\else
val=
\@#1
\fi
}{
def now
\gdef\@#1{#2}}
}
\DeclareDocumentCommand{\atitle}{g}{\docInfo{atitle}{#1}}
\atitle % output: val= atitle
\atitle{123} % output: def now
\atitle % output: val= 123
% --------------------------------
如上所示,只要一行就可以定义一个指令了,简单许多,但总是失败。
\ifx那行总是无法判断而跑去\else区段,而且会显示出atitle字样
但在有值後又能够正常显示。
请问问题是出在哪里呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.43.226.202
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LaTeX/M.1477428855.A.0F1.html
※ 编辑: sppmg (114.43.226.202), 10/26/2016 04:55:36