\usepackage[%
    indexonlyfirst% Show only the first use page on the list of acronyms
]{glossaries}
\usepackage{xspace} % To avoid problems with missing spaces after custom commands

% Set the list of acronyms style
\newglossarystyle{dots}{% From https://tex.stackexchange.com/a/327513
    \setglossarystyle{list}% Base style
    %
    \renewcommand*{\glossentry}[2]{%
        \item[%
                    \upshape\bfseries% Upright and bold
                    \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}% The acronym
              ]%
        \glossentrydesc{##1}% The description
        \unskip\leaders\hbox to 2.9mm{\hss.}\hfill##2}% The pages
    %
    \renewcommand*{\glsgroupskip}{}% No gap between groups
}
\setglossarystyle{dots}

\makenoidxglossaries % Prepare the list of acronyms

% Define the acronyms
\NewDocumentCommand{\acronym}{O{#2} m m}{% #1 = command, #2 = acronym, #3 = full name
    \newacronym{#1}{#2}{#3}%
    \expandafter\newcommand\csname #1\endcsname{% Create a command named after the acronym (call \#1)
        \gls{#1}\xspace%
    }%
    \expandafter\providecommand\csname #1s\endcsname{% Create a plural command (call \#1s) if not already defined
        \glspl{#1}\xspace%
    }%
}

% Style the acronyms
\renewcommand*{\glstextformat}[1]{\textcolor{black}{#1}} % Hyperlink in black

\let\AE\undefined
\let\v\undefined

\acronym[TAFC]{2AFC}{two-alternative forced choice}
\acronym[TwoD]{2D}{two-dimensional}
\acronym[ThreeD]{3D}{three-dimensional}
\acronym{AE}{augmented environment}
\acronym{AC}{alternating current}
\acronym{AR}{augmented reality}
\acronym{DC}{direct current}
\acronym{DoF}{degree of freedom}
\acronym{ERM}{eccentric rotating mass}
\acronym{h}{haptic}
\acronym{HMD}{head-mounted display}
\acronym{JND}{just noticeable difference}
\acronym{LRA}{linear resonant actuator}
\acronym{MR}{mixed reality}
\acronym{OST}{optical see-through}
\acronym{PI}{place illusion}
\acronym[PSI]{Psi}{plausibility}
\acronym{PSE}{point of subjective equality}
\acronym{RE}{real environment}
\acronym{RV}{reality-virtuality}
\acronym{SoE}{sense of embodiment}
\acronym{v}{visual}
\acronym{VCA}{voice-coil actuator}
\acronym{VE}{virtual environment}
\acronym{vh}{visuo-haptic}
\acronym{VO}{virtual object}
\acronym{VR}{virtual reality}
\acronym{VST}{visual see-through}
\acronym{WH}{wearable haptic}
