为变量分配数学代码

为变量分配数学代码

我希望s2我的大文本中的所有单词都能被自动识别为$\rm s^2$,这样当我有大量诸如这样的常量时9.8 m/s2,它们就会被自动识别为9.8 m/{$\rm s^2$}并被编译为这样。

答案1

如果您可以自由使用 LuaLaTeX,则可以将其用作预处理器,将所有实例替换为s2\ensuremath{\textnormal{s}^2}即时”。下面给出的代码通过将执行此替换的函数分配给回调来工作process_input_buffer,该回调运行TeX 开始其常规处理。

话虽如此,我认为从中期到长期来看,你最好熟悉这个siunitx软件包,并习惯于书写,比如说\SI{9.81}{\meter\per\second\squared}

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{amsmath} % for "\ensuremath" macro
\usepackage{luacode}
\begin{luacode}
function s2 ( x )
  x = string.gsub ( x , "s2" , "\\ensuremath{\\textnormal{s}^2}" )
  return x
end
luatexbase.add_to_callback ( "process_input_buffer" , s2 , "s2" )
\end{luacode}

\begin{document}
9.81\,m/s2, $9.81\,\textrm{m}/s2$
\end{document}

答案2

它不完全是你想要的,但我希望接近。

  1. 使用编辑器将所有s2(观察空格)替换为,例如\seckw2

  2. \def\seckw#1{$\mathrm{s^{#1}}$}

还有其他方法,但需要一些有关您的条目的额外知识。

相关内容