重新定义 latex 命令

重新定义 latex 命令

最初我使用的是:

\hat{x}

在我的文档中使用 XeLaTeX。但是,我现在想将带帽子的字母加粗并设为斜体。我尝试了重新定义:

\AtBeginDocument{\renewcommand{\hat}[1]{\symbfit{\hat{#1}}}}

但不起作用。我该如何实施我想要的更改?

答案1

我不建议重新定义像这样的标准命令\hat(因为您想重新定义,\hat所以\hat无论如何你都必须使用一些技巧:我可以重新定义一个命令来包含它自己吗?)。每当您重新定义核心命令时,您都有可能遇到麻烦,因为超出您控制范围的代码(例如来自您加载的包)会使用该命令,并假设它具有其正常定义。当文档输出似乎与他们对代码的期望不符时,协作者也可能会感到困惑。

这里我只需执行以下操作。

  1. 最好用一个语义名称来定义一个新命令。由于我不知道你要用这​​个做什么,所以我使用了一个非语义名称
    \newcommand*{\bihat}[1]{\symbfit{\hat{#1}}}
    
    但您可能需要考虑使用一个能够反映您所处上下文的格式含义的名称。
  2. 使用编辑器将 替换\hat{\bihat{。每个编辑器都应该具有搜索和替换功能。使用此替换,您甚至不需要正则表达式和花哨的东西,因为新宏的参数结构与旧宏完全相同。

这样,下次你改变主意时就可以轻松地更改输出:只需将\newcommand*{\bihat}[1]{\symbfit{\hat{#1}}}你的序言更改为

\newcommand*{\bihat}[1]{\symbfit{#1}}

说。

答案2

根据您的其他问题我假设您有以下设置:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Latin Modern Math}
\setmainfont{Latin Modern Roman}

并且您想要用类似...的内容替换宏中的任何单个字符\hat{...。}\hat{\symbfit{}}

正如评论中所指出的,重新定义现有的宏可能会导致将来出现问题,因此我宁愿建议您更改代码。

无需手动检查代码,只需使用以下替换即可完成此操作常用表达据我所知,TeXstudio 或 Texmaker 支持此功能。请参阅软件手册以了解如何使用此功能。

您可以使用正则表达式将所有出现的\hat{<一个字母>替换}\hat{\symbfit{<一个字母>,}}如下所示:

搜索模式:\\hat\{([a-zA-Z])\}

更换模式:\hat{\symbfit{$1}}

笔记:请查阅软件手册,因为替换模式可能不同。有些软件使用\1而不是$1来选择搜索模式的第一个捕获组,有时您也需要在替换模式中\使用转义符。\\

相关内容