我想製作不需要大括號來接受參數的巨集。讓我們發明一個例子。假設我想要一個接受可選參數f
和參數的巨集x
:
\dd[f]{x}
這相當於寫:
\frac{\mathrm{d} f }{\mathrm{d} x }
問題是,可以建立一個巨集,這樣我就不必寫括號,但它仍然接受參數嗎?
如果我可以避免使用括號,那就非常方便了。像這樣的東西會很棒:
\dd f,x
有什麼辦法可以避免寫括號嗎?
答案1
這種宏是純文字結構,稱為「定界宏」。在乳膠中不鼓勵這樣做,至少部分是因為它很容易出錯。
這是一個滿足您要求的範例:
\documentclass{article}
\def\dd #1,#2 {\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\thispagestyle{empty}
$\dd f,x $
\end{document}
請注意,如果省略輸入中第二個參數後面的空格
$\dd f,x$
你會得到一個錯誤:
! Missing } inserted.
<inserted text>
}
l.5 $\dd f,x$
然而,沒有明確的「更接近」限制了對單一輸入標記的參數的識別,這可能是非常有限的,儘管不適合此範例。
編輯: 為了回應對類似的分隔宏(其中參數可以是可選的)的請求,這裡是相同的宏,為此目的進行了修改。在這種特殊情況下,所需要的只是對每個參數進行明確界定。
\documentclass{article}
\def\dd #1,#2;{\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\[\dd f,x; \quad \dd ,x; \quad \dd ,; \]
\end{document}
在這種情況下,每個參數可能只有一個字母或控制序列(例如\phi
),省略參數只是將其從輸出中省略。 (只是不要輸入句點而不是逗號,就像我在設定範例時所做的那樣。)
在更複雜的情況下,多字元字串將是參數,參數中可能存在標點符號意味著必須更加小心地選擇分隔符號;在這種情況下,還可以將受影響的參數括在大括號中,以使它們顯示為 (la)tex 的單個 tokan,如 @SeanAllred 的評論中所建議的。
並且,如果要在文本中使用此宏,而不是在數學中,則為非常小心擴展中的空間。