我想重新定义\hat{H}
仅\hat{\cal H}
针对这个特定字母(物理学中的汉密尔顿符号)。非常感谢。
答案1
嗯,我猜这里有两种方法可以解决:
使用编辑器的“查找和替换”工具将所有匹配的替换
\hat{H}
为\hat{\mathcal{H}}
或更吸引人一点...在文档的序言中定义一个新命令,比如
\newcommand*{\hham}{\hat{\mathcal{H}}}
。然后使用编辑器的“查找和替换”工具将所有匹配的 替换\hat{H}
为\hham
MWE 将是
\documentclass{article}
\usepackage{amsmath}
\newcommand*{\hham}{\hat{\mathcal{H}}}
\begin{document}
The relation,
\[\hham\psi_n = E_n\psi_n\]
is valid for every eigenstate $\psi_n$ of the Hamiltonian $\hham$.
\end{document}
干杯!
答案2
最简单的方法是定义一个新命令\hatH
:
\documentclass{article}
\newcommand*{\hatH}{\hat{\mathcal{H}}}
\begin{document}
\[ \hatH \]
\end{document}
\hat
由于 TeX 数学规则,对 的重新定义要复杂得多。\hat
扩展为\mathaccent
不会将其基数解析为“参数”,而是解析为<math field>
。后者可以是数学符号或子公式。这不能以 100% 兼容的方式通过宏参数进行解析。
H
近似值是以下示例,它测试或{H}
遵循的情况\hat
:
\documentclass{article}
\makeatletter
\newcommand*{\old@hat}{}
\let\old@hat\hat
\newcommand*{\hatH}{\old@hat{\mathcal{H}}}
\renewcommand*{\hat}{%
\@ifnextchar\bgroup{%
\new@hat
}{%
\@ifnextchar H{%
\expandafter\hatH\@gobble
}{%
\old@hat
}%
}
}
\newcommand*{\new@hat@H}{H}
\newcommand*{\new@hat@arg}{}
\newcommand*{\new@hat}[1]{%
\renewcommand*{\new@hat@arg}{#1}%
\ifx\new@hat@arg\new@hat@H
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{%
\hatH
}{%
\old@hat{#1}%
}%
}
\makeatother
\begin{document}
\[ \hatH \hat H \hat{H} \hat x \hat{x} \hat{ab} \]
\end{document}