使用參數指令作為不帶括號的參數

使用參數指令作為不帶括號的參數

如果以前有人問過這個問題,我不會感到驚訝,但我的搜尋沒有產生任何結果。如果不對 TeX 核心進行一些非常危險的駭客攻擊或其他操作就不可能做到這一點,我不會感到驚訝。但無論如何請容許我問一下。

我按照建議使用以下程式碼作為數學模式下粗體字母的快捷方式這裡

\documentclass{memoir}
\usepackage{amsmath,bm,amsfonts}

\def\*#1{\bm{\mathrm{#1}}}

\begin{document}
Let $\*v$ be a vector in $\mathbb R^n$ with $A\*v = \*v$.
\end{document}

這在大多數情況下都很方便,但有時\*v在其他命令的參數中寫入會變得乏味。例如,我可能想寫出\*vas的導數\dot{\*v}。我想知道是否有辦法避免寫 s {}。具體來說,我想要的是重新定義命令,\*以便

$\dot\*v$

甚至

$\dot\*{longvector}$

可以正確解析。

答案1

也許這足以滿足您的需求

\def\*#1{{\bm{\mathrm{#1}}}}
\let\olddot\dot
\def\dot{\expandafter\olddot}

請注意巨集定義主體周圍的額外括號\*:這是為了使 的擴展\*看起來像 的單一參數\olddot

\dot\*v -> \expandafter\olddot\*v -> \olddot{\bm{\mathrm{v}}}

相關內容