是否可以在数学模式中使用多个下标或上标语法?

是否可以在数学模式中使用多个下标或上标语法?

我经常需要在数学模式下写这样的表达式:

L_t^pL_x^q

期望输出

出于某种原因,我并不总是满足于输入这些,我想定义一些具有相同输出的新命令。我在想是否可以定义一个具有相同输出的命令,其代码如下所示:

\LL_t_x^p^q

我已经发现这个帖子关于张量,这看起来相当相关(参见第一个答案)。“tensor”包中使用的语法相当不错,但我不知道如何使用该语法复制命令。

我的问题如下:

  1. 尽管“tensor”包中的语法非常好,但在我的梦想中,我希望能够在上面写的命令中使用完全相同的语法: 。那么,有没有办法设计一个像上面一样工作的命令(即,具有与 相同的输出\LL_x_t^p^q形式的命令)?\LL_t_x^p^qL_t^pL_x^q

  2. 如果没有,我该如何设计一个与“tensor”包语法相同的命令?也就是说(如果我理解正确的话),一个具有 3 类输入的通用命令,\arg语法如下:\superscriptI,\superscriptII,...\subscriptI,\subscriptII,...

\commandname{\arg}{^\superscriptI_\subscriptI_\subscriptII^\superscriptII...}

(就我而言,我想编写一个形式为 的命令\LL{_x_t^p^q},其输出与 相同L_t^pL_x^q)。

答案1

在此处输入图片描述

\documentclass{article}

\def\LL{\futurelet\tmp\LLx}
\def\LLx{\ifx\tmp_\expandafter\LLxx\fi}
\def\LLxx_#1#2^#3{L_{#1}^{#3}\LL#2}

\begin{document}

$\LL_t_x^p^q$

$\LL$

$\LL_t_x_a^p^q^b$

\end{document}

答案2

用例显示了输入语法中的一些可能变化,所有这些变化都会产生所需的输出。例如,\LL_x_t^p^q$$\LL_x^p_t^q$$\LL^p_x_t^q$都产生相同的输出。

编辑以允许包含下标或上标,例如形式\LL_{x_a}_t^p^q

\documentclass{article} 
\newcommand\LL{
  \toks0{}\toks2{}
  \def\subbase{0}
  \def\supbase{0}
  \LLdigest
}
\newcommand\LLdigest[2]{
  \ifx_#1
    \toks\subbase\expandafter{\the\toks\subbase#1{#2}}
    \def\subbase{2}
    \def\next{\LLdigest}
  \else
    \ifx^#1
      \toks\supbase\expandafter{\the\toks\supbase#1{#2}}
      \def\supbase{2}
    \def\next{\LLdigest}
    \else
      L\the\toks0L\the\toks2 
      \def\next{#1#2}
    \fi
  \fi
  \next
}
\begin{document} 
$\LL_x_t^p^q$ 

$\LL_x^p_t^q$ 
\end{document}

在此处输入图片描述

答案3

我可以提出一个稍微不同的语法。

\documentclass{article}
\usepackage{amsmath}

\NewDocumentCommand{\LL}{e{_^}}{%
  \LLaux{#1}{#2}%
}
\NewDocumentCommand{\LLaux}{%
  >{\SplitArgument{1}{,}}m
  >{\SplitArgument{1}{,}}m
}{%
  \LLauxa#1#2%
}
\NewDocumentCommand{\LLauxa}{mmmm}{%
  L_{#1\vphantom{#2}}^{#3\vphantom{#4}}
  L_{#2\vphantom{#1}}^{#4\vphantom{#3}}
}

\begin{document}

$\LL_{t,x}^{p,q}$

\end{document}

在此处输入图片描述

然而,如果全部你的实例\LL有形式

\LL_t_x^p^q

也就是说,每次调用都有两个下标和两个上标,解决方案更直接:

\newcommand{\LL}{} % for safety
\def\LL_#1_#2^#3^#4{%
  L_{#1\vphantom{#2}}^{#3\vphantom{#4}}%
  L_{#2\vphantom{#1}}^{#4\vphantom{#3}}%
}

相关内容