巨集接受參數而不用括號括起來?

巨集接受參數而不用括號括起來?

我想製作不需要大括號來接受參數的巨集。讓我們發明一個例子。假設我想要一個接受可選參數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 的評論中所建議的。

並且,如果要在文本中使用此宏,而不是在數學中,則為非常小心擴展中的空間。

相關內容