Hier ist mal noch ein Vorschlag mit dem Paket [`datatool`][1]. Damit kann man sich eine Datenbank definieren, in die man alle Begriffe einträgt, die bereits hervorgehoben wurden. Bei erneuter Verwendung eines solchen Begriffes wird dieser dann normal ausgegeben.
Im folgenden wird die Hervorhebung mit `\textsc{...}` gemacht, möglich wären aber auch andere Befehle wie zum Beispiel `\emph{...}`.
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{datatool}
\newcommand\hvg[1]{%
\DTLifdbexists{Hervorhebungen}{%
\def\shvgtest{nein}%
\DTLforeach{Hervorhebungen}{\shvg=schon hervorgehoben}{%
\DTLifeq{#1}{\shvg}{%
\def\shvgtest{ja}%
\dtlbreak%
}{}%
}%
}{%
\DTLnewdb{Hervorhebungen}%
\newcommand\shvgtest{nein}%
}%
\DTLifeq{ja}{\shvgtest}{%
#1%
}{%
\DTLnewrow{Hervorhebungen}%
\DTLnewdbentry{Hervorhebungen}{schon hervorgehoben}{#1}%
\emph{#1}%
\textsc{#1}%
}%
}
\begin{document}
\begin{itemize}
\item Das ist ein \hvg{Test},
bei dem die erste \hvg{Ausgabe} eines Textstückes hervorgehoben wird.
\item Das ist ein \hvg{Test},
bei dem die erste \hvg{Ausgabe} eines Textstückes hervorgehoben wird.
\item Wie man sieht,
bei der \hvg{zweiten} \hvg{Ausgabe} dann aber nicht mehr.
\end{itemize}
\end{document}
![alt text][2]
Wenn
----------
Will man allerdings wirklich das Paket `soulutf8` verwendet, verwenden und Begriffe durch Sperrung hervorheben, ist ein auf die Hervorhebung folgendes Leerzeichen wichtig, damit die Abstände vor und nach dieser richtig eingestellt werden. Deshalb muss mindestens das nachfolgende Leerzeichen als zweites Argument übergeben werden. Falls dagegen ein Punkt oder Komma folgt, kann das zweite Argument leer bleiben. (Vermutlich geht das irgendwie eleganter, ich habe aber gerade keine Idee dafür.)
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{soulutf8}
\usepackage{datatool}
\newcommand\hvg[2]{%
\DTLifdbexists{Hervorhebungen}{%
\def\shvgtest{nein}%
\DTLforeach{Hervorhebungen}{\shvg=schon hervorgehoben}{%
\DTLifeq{#1}{\shvg}{%
\def\shvgtest{ja}%
\dtlbreak%
}{}%
}%
}{%
\DTLnewdb{Hervorhebungen}%
\newcommand\shvgtest{nein}%
}%
\DTLifeq{ja}{\shvgtest}{%
#1#2%
}{%
\DTLnewrow{Hervorhebungen}%
\DTLnewdbentry{Hervorhebungen}{schon hervorgehoben}{#1}%
\so{#1}#2%
}%
}
\begin{document}
\begin{itemize}
\item Das ist ein \hvg{Test}{},
bei dem die erste \hvg{Ausgabe}{ }eines Textstückes hervorgehoben wird.
\item Das ist ein \hvg{Test}{},
bei dem die erste \hvg{Ausgabe}{ eines} Textstückes hervorgehoben wird.
\item Wie man sieht,
bei der \hvg{zweiten}{ }\hvg{Ausgabe}{ }dann aber nicht mehr.
\end{itemize}
\end{document}
![alt text][3]
[1]: http://www.ctan.org/pkg/datatool
[2]: http://texwelt.de/wissen/upfiles/hervorhebung1.png
http://texwelt.de/wissen/upfiles/hervorhebung3.png
[3]: http://texwelt.de/wissen/upfiles/hervorhebung2_1.png