使用 tex 的下标替代语法

使用 tex 的下标替代语法

我有时想使用不同的语法来写下标,而不是$u_{xx} blahblah$像这样写

  1. $u⎵xx blah blah$, 甚至
  2. $u⎵xx+blah blah$

其中x1. 中的 后面的空格或 2. 中的加号会将其踢出下标。

是否可以使用 TeX 中的一些巧妙方法来实现这一点?

-我正在使用 XeLatex

答案1

在文档中这样做确实不是一个好主意,但作为 TeX 练习,它有 pdftex 和 xetex 版本:

在此处输入图片描述

\documentclass{article}

\ifx\XeTeXmathchar\undefined
% E2 8E B5
\catcode"E2\active
\else
\catcode"23B5\active
\fi
\def⎵{\sb\bgroup\xcollectsub}
\def\xcollectsub{\afterassignment\collectsub\global\let\tmp= }
\def\collectsub{%
\ifcat a\tmp
\tmp\expandafter\xcollectsub
\else
\egroup\expandafter\tmp
\fi}
\begin{document}

    $u⎵xx blah blah$, or even
    $u⎵xx+blah blah$

\end{document}

答案2

不推荐!

“⎵” hallo bit only shows that⎵ 在文本模式下不活跃。

代码

\documentclass{article}
\usepackage{ltxcmds}
\makeatletter
\let\qrr@openbrace={
\begingroup
\catcode`⎵=\active
\gdef ⎵{\qrr@subscript{}{}}
\gdef\qrr@subscript#1#2{%
    \ltx@ifnextchar@nospace{ }{_{#1#2}}{%
        \@ifnextchar+{_{#1#2}}{%
            \@ifnextchar-{_{#1#2}}{%
                \@ifnextchar\qrr@openbrace{\qrr@subscript@{#1#2}}{\qrr@subscript{#1#2}}}%
        }%
    }%
}
\gdef\qrr@subscript@#1#2{% groups the second argument
    \qrr@subscript{#1}{{#2}}%
}
\endgroup
\makeatother
\mathcode`⎵="8000
\begin{document}
``⎵'' hallo                       \par
$u ⎵xx f⎵rz $                     \par
$u ⎵xx+ x⎵rz- f⎵x\mathrm{text}x $ \par
$ f⎵x{ab \over cd}y $
\end{document}

输出

在此处输入图片描述

相关内容