# Using math accents/diacritics as standalone symbols

Suppose I have an operation on a set X which I want to denote with something like $X^\prime$, $X^\bullet$, or $X^\circ$, except with a different symbol. I found out that some of the diacritics available in math mode (see here) make a decent candidate when used “standalone”, for instance as $X \: \tilde{}$ or $X \: \hat{}$. This might not be the intended use for these characters, but the result looks very nice IMHO (certainly much nicer than, say, $X^\sim$ or $X^\wedge$).

However, in doing so, I will inevitably run into problems. One of these is easy to solve: a bit of extra space should be inserted before the standalone diacritic to make it look nice (a small space like \: seems to do the trick). However, if the diacritic is preceded by a subscript, I would like it to behave like a superscript, so it starts above the subscript, not after it. This is illustrated by the following MWE:

\documentclass[margin=2mm]{standalone}
\usepackage{amsmath}

\newcommand{\myhat}{\ensuremath{\:\hat{}}}
\newcommand{\mytilde}{\ensuremath{\:\tilde{}}}
\newcommand{\mybreve}{\ensuremath{\:\breve{}}}
\newcommand{\mycheck}{\ensuremath{\:\check{}}}

\begin{document}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|c|c|c|c|}
\hline
command & no subscript & short subscript &  long subscript \\
\hline
hat     & $X\myhat$    & $X_1\myhat$     &  $X_{\omega(k)}\myhat$   \\
tilde   & $X\mytilde$  & $X_1\mytilde$   &  $X_{\omega(k)}\mytilde$ \\
breve   & $X\mybreve$  & $X_1\mybreve$   &  $X_{\omega(k)}\mybreve$ \\
check   & $X\mycheck$  & $X_1\mycheck$   &  $X_{\omega(k)}\mycheck$ \\
\hline
\end{tabular}
\end{document}


My question is this: how can I make these “standalone” diacritics behave more like superscripts, without having to resort to adding negative horizontal space manually for each occurrence? Alternatively, can identical symbols also be generated in a different way, so that they may be used simply as $X^\standalonetilde$, $X^\standalonehat$, $X^\standalonebreve$, and $X^\standalonecheck$?

• As a side node, the converse (i.e. taking a general symbol and turning it into an accent) is covered by this question. – Josse Sep 12 '18 at 22:23

Not very efficient, but it seems to work.

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand\makesymbolaccent[2]{%
\edef#1{{\mkern-1mu\noexpand\symbolaccent{\mathchar"\expandafter\@gobblethree#2}}}%
}
\newcommand{\symbolaccent}[1]{\mathpalette\symbol@accent{#1}}
\newcommand{\symbol@accent}[2]{%
\sbox\z@{$\m@th\demote@style{#1}#2$}%
\sbox\tw@{$\m@th\demote@style{#1}{}^{\demote@style{#1}#2}$}%
\raisebox{\dimexpr\ht\z@-\ht\tw@}[\height][0pt]{\copy\z@}%
}
\newcommand\demote@style[1]{%
\ifx#1\scriptstyle\textstyle\else\scriptstyle\fi
}
\makeatother

\makesymbolaccent{\ehat}{\hat}
\makesymbolaccent{\etilde}{\tilde}
\makesymbolaccent{\ebreve}{\breve}
\makesymbolaccent{\echeck}{\check}

\begin{document}

\begin{tabular}{|c|c|c|c|}
\hline
command & no subscript & short subscript &  long subscript \\
\hline
hat     & $X^\ehat$    & $X_1^\ehat$     &  $X_{\omega(k)}^\ehat$   \\
tilde   & $X^\etilde$  & $X_1^\etilde$   &  $X_{\omega(k)}^\etilde$ \\
breve   & $X^\ebreve$  & $X_1^\ebreve$   &  $X_{\omega(k)}^\ebreve$ \\
check   & $X^\echeck$  & $X_1^\echeck$   &  $X_{\omega(k)}^\echeck$ \\
\hline
\end{tabular}

\end{document}


• Thank you for your solution, and sorry for the late response. I am hesitant to accept this, on the one hand because I don't quite understand what's going on, and on the other hand because I'm not too happy with how this looks in other font sizes (e.g. $\bigcup_{x \in X^\ehat} S_x$) (though it's not too bad). I'll look at this more closely some time in the (near) future. – Josse Apr 18 at 14:38