\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

\acronym[TIFC]{2IFC}{two-interval forced choice}
\acronym[TwoD]{2D}{two-dimensional}
\acronym[ThreeD]{3D}{three-dimensional}
\acronym{AE}{augmented environment}
\acronym{AC}{alternating current}
\acronym{ANOVA}{analysis of variance}
\acronym{ART}{aligned rank transform}
\acronym{AR}{augmented reality}
\acronym{CI}{confidence interval}
\acronym{DC}{direct current}
\acronym{DoF}{degree of freedom}
\acronym{ERM}{eccentric rotating mass}
\acronym{GLMM}{generalized linear mixed models}
\acronym{HSD}{honest significant difference}
\acronym{JND}{just noticeable difference}
\acronym{LRA}{linear resonant actuator}
\acronym{LMM}{linear mixed models}
\acronym{MLE}{maximum-likelihood estimation}
\acronym{MR}{mixed reality}
\acronym{OST}{optical see-through}
\acronym{PSE}{point of subjective equality}
\acronym{RE}{real environment}
\acronym{UI}{user interface}
\acronym{VCA}{voice-coil actuator}
\acronym{VE}{virtual environment}
\acronym{VO}{virtual object}
\acronym{VR}{virtual reality}
\acronym{VST}{visual see-through}
