有没有什么方法可以加快输入带有参数 symbol^(variable) 的数学符号?

有没有什么方法可以加快输入带有参数 symbol^(variable) 的数学符号?

我想输入

$s^{(L)}$

L符号是一个变量

它可以是,,$s^{(1)}$$s^{(2)}$基本上是任何整数) $s^{(L-1)}$,,$s^{(L+1)}$

输入这些内容非常耗时。因为我必须输入{ (,决定使用哪个变量,然后输入) }。有什么方法可以加快这个过程吗?

我曾经看到过 # 字符的用法\DeclareMathSymbol。我不知道这是否相关。

答案1

如果\s尚未定义为宏,则可以通过以下方式定义它

\providecommand{\s}[1]{s^{(#1)}}

然后写

$\s1, \s5, \s P, \s{L-1}$

在文档正文中生成

在此处输入图片描述

答案2

例如,您可以设置s为数学活动字符:

\mathchardef\mathSc=\mathcode`s
\def\mathS{\mathSc \futurelet\next\mathSa}
\def\mathSa{\ifx\next^\expandafter\mathSb\fi}
\def\mathSb^(#1){^{(#1)}}
{\catcode`s=13 \global\let s=\mathS}
\mathcode`s="8000

%test:
$s+s^(2)$  % gives: s + s^{(2)}

如果您可以接受在源文件\s中用 代替s^{...}代替(...)那么声明就简单得多:

\def\s#1{s^{(#1)}}

答案3

为了多样化,这里有一个与我之前的回答实现 OP 的格式化目标。如果恰好有一个变量 --出现在诸如和 之s类的表达式的基数中,那么这种方法就可以很好地工作。s^{5)}s^{(L-1)}不是不过,如果您还需要输出,那么就r^{5)}说吧t^{(L-1)}

如果您愿意并且能够使用 LuaLaTeX 来编译您的文档,您可以利用 Lua 的模式匹配功能让您输入s!1!p!5!和 ,Q !L-1!并使其输出就像您写了s^{(1)}p^{(5)}和 一样Q^{(L-1)}

  • 这里,!起到数学中不常出现的一些分隔符的作用。

  • 当然,!在数学中被广泛(普遍?!)用来表示阶乘。因此,如果您的文档包含大量阶乘表达式,您要么必须选择不同的分隔符,要么写入n{}!以破坏模式匹配例程。

在此处输入图片描述

\documentclass{article}
\usepackage{luacode} % for 'luacode' environment
\begin{luacode}
-- Define a Lua function to do all of the work:
function automate ( u )
   -- Search pattern: alphabetical character, possibly followed by whitespace,
   --    followed by non-empty material delimited by '!' characters.
   return ( u:gsub ( "(%a)%s-!(..-)!" , "%1^{(%2)}" ) )
end
\end{luacode}
%% Assign this function to LuaTeX's 'process_input_buffer' callback:
\AtBeginDocument{\directlua{ luatexbase.add_to_callback ( 
   "process_input_buffer", automate , "automate" ) }}
  
\begin{document} 
$s!1! \quad p!5! \quad Q !L! \quad \alpha ! \omega ! \quad 5! \quad n{}!$\quad Hello{}! \quad Hello!!
\end{document} 

相关内容