定义(例如“\def\-{…}”)和脚注

定义(例如“\def\-{…}”)和脚注

如果我使用类似的结构

\def\-{-minus-}
A\-B\footnote{A\-B}

那么结果是A-minus-B主文本区域中预期的结果,但脚注仅包含AB

我做了更多的测试,似乎\def\-上述声明在脚注中被忽略了。

有没有办法来解决这个问题?

答案1

重新定义\-并不是最好的选择,因为该命令是基本的 LaTeX 命令之一,并且在多个地方(包括脚注,正如您所发现的)被内部重新定义。

如果您的目的是定义一个通用命令\g(不要\a像最初提议的那样使用,原因与 相同\-),您可以利用expl3\peek_regex_replace_once:nnTF

此命令通过寻找正则表达式的匹配来工作,如果匹配,则按照您的意愿替换找到的标记,并可以在获得的标记列表上执行某些操作;如果不匹配,则可以执行其他一些代码。

此处的替换包括将匹配的标记括起来,以便函数\curious_g:n可以对它们进行操作。 的工作方式\curious_g:n应该很清楚。请注意,您甚至可以在 后面使用多个字符\g

\documentclass{article}

\DeclareMathSymbol{\mathhyphen}{\mathord}{operators}{"2D}

\ExplSyntaxOn

\NewDocumentCommand{\g}{}
 {
  \peek_regex_replace_once:nnTF
   { ( \- | \= | \+ | \!\= ) } % look for
   { \cB\{ \1 \cE\} }          % replace with
   { \curious_g:n }            % do if match
   { \BAD }                    % do if no match
 }

\cs_new_protected:Nn \curious_g:n
 {
  \str_case:nn { #1 }
   {
    {-}{\mathhyphen}
    {=}{\equiv}
    {+}{\oplus}
    {!=}{\not\equiv}
   }
 }

\ExplSyntaxOff

\begin{document}

$a \g- b$
$a \g= b$
$a \g+ b$
$a \g!= b$
$a \g? b $ % error
${\g}$     % error

\end{document}

你应该\BAD使用一些更具信息量的东西。

在此处输入图片描述

答案2

上述讨论清楚地表明,重新定义\-是一个坏主意。

尽管如此,我需要某些字符的“我的版本”,这是我的解决方案:基本上,它具有上面提到的风格\def\a-{-minus-},但它对多个字符重用了单字母文字命令(我将其更改为\g):

\usepackage{ifthen}

\mathchardef\myhyphen="2D

\newcommand{\g}[1]{%
  \ifthenelse{\equal{#1}-}{\myhyphen}{}%
  \ifthenelse{\equal{#1}=}{\equiv}{}%
  \ifthenelse{\equal{#1}+}{\oplus}{}%
}

结果可见于$\g+ \g= \g-$:它满足我的需要。

相关内容