[問題] 間接定義指令
抱歉,我實在想不到比較好的標題可以下。
我想做出一個指令,當有參數時賦值,沒參數時顯示數值。
以\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://www.ptt.cc/bbs/LaTeX/M.1477428855.A.0F1.html
※ 編輯: sppmg (114.43.226.202), 10/26/2016 04:55:36
LaTeX 近期熱門文章
PTT數位生活區 即時熱門文章