Here's my MWE:
% !TEX program = lualatex
\documentclass[preview,border={5mm 2.5mm 5mm 0mm},varwidth]{standalone}
\usepackage{mathtools}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
\setmathfont{Latin Modern Math}
\usepackage{setspace}\setdisplayskipstretch{}
\newcommand{\testprime}[3][-2]{A' #2 x #3 ; B' #2 x #3 ; C' #2 x #3 ; P' #2 x #3 ; Q' #2 x #3 ; R' #2 x #3 ; f' #2 x #3 ; g' #2 x #3 ; h' #2 x #3}
\newcommand{\testkernedprimeleftdelimiter}[3][-2]{A' \mkern#1mu#2 x #3 ; B' \mkern#1mu#2 x #3 ; C' \mkern#1mu#2 x #3 ; P' \mkern#1mu#2 x #3 ; Q' \mkern#1mu#2 x #3 ; R' \mkern#1mu#2 x #3 ; f' \mkern#1mu#2 x #3 ; g' \mkern#1mu#2 x #3 ; h' \mkern#1mu#2 x #3}
\begin{document}
\onehalfspacing%
[\testprime{(}{)}]
[\testkernedprimeleftdelimiter{(}{)}]
[\testprime{[}{]}]
[\testkernedprimeleftdelimiter[-0.5]{[}{]}]
[\testprime{{}{}}]
[\testkernedprimeleftdelimiter{{}{}}]
\end{document}
I want to globally redefine ' or ^{\prime} to be kerned using \mkern only when it encounters a left delimiter (specifically -2mu for ( and \{, and -0.5mu for [) in math mode (maybe using \@ifnextchar?).
How do I achieve this?
*Related: This TeX.SX question and answer and the definition of ' in latex.ltx.
\def\active@math@prime{^\bgroup\prim@s}
{\catcode`\'=\active \global\let'\active@math@prime}
\def\prim@s{%
\prime\futurelet\@let@token\pr@m@s}
\def\pr@m@s{%
\ifx'\@let@token
\expandafter\pr@@@s
\else
\ifx^\@let@token
\expandafter\expandafter\expandafter\pr@@@t
\else
\egroup
\fi
\fi}
\def\pr@@@s#1{\prim@s}
\def\pr@@@t#1#2{#2\egroup}


ConTeXt. – Farrel Ahmed Jul 02 '22 at 02:08