Zum einen, weil LaTeX das standardmäßig für ein Satzschlusszeichen hält und den Abstand vergrößert. (Lösungen wie \frenchspacing klammere ich mal aus, weil ich das eigentlich ganz angenehm zum Lesen finde.)
Das lässt sich mit \@ umgehen, was man wiederum als eigenes Command oder in \DeclareAcronym auch automatisieren kann.
Zum anderen, weil solche Abkürzungen ja auch am Satzende stehen können und dann ein doppelter Punkt auftaucht. Ich würde jetzt gerne so etwas wie \@ifnextchar.{}{.\@} einbauen, scheitere aber daran.
Zur Veranschaulichung ein kleines Beispiel (XeLaTeX, sollte aber auch mit pdfLaTeX und LuaLaTex klappen):
\documentclass{article} \usepackage{acro} \DeclareAcronym{etc.1}{short = {etc.}, long = {et cetera}, } \DeclareAcronym{etc.2}{short = {etc.\@}, long = {et cetera}, pdfstring = {etc.}, accsupp = {etc.}, } \makeatletter \newcommand\etc{etc\@ifnextchar.{}{.\@}} \makeatother \begin{document} \ac{etc.1} % richtig \ac{etc.2} % richtig et cetera (\etc{}) % richtig et cetera (\etc) % richtig Die Abbreviatur \ac{etc.1} steht mitten im Satz. % falsch Die Abbreviatur \ac{etc.1}\@ steht mitten im Satz. % richtig Die Abbreviatur \ac{etc.2} steht mitten im Satz. % richtig Die Abbreviatur \etc{} steht mitten im Satz. % richtig Die Abbreviatur \etc steht mitten im Satz. % falsch Am Ende des Satzes steht die Abbreviatur \ac{etc.1}. % falsch Am Ende des Satzes steht die Abbreviatur \ac{etc.2}. % falsch Am Ende des Satzes steht die Abbreviatur \etc{}. % falsch Am Ende des Satzes steht die Abbreviatur \etc. % richtig \end{document}
R.