[問題] 間接定義指令

看板LaTeX (論文排版)作者 (sppmg)時間8年前 (2016/10/26 04:54), 8年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
抱歉,我實在想不到比較好的標題可以下。 我想做出一個指令,當有參數時賦值,沒參數時顯示數值。 以\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
文章代碼(AID): #1O3yPt3n (LaTeX)
文章代碼(AID): #1O3yPt3n (LaTeX)