Gibt es eine einfache Möglichkeit, mit einem Paket oder einem einfachen LaTeX-Skript, für dessen Ausführung keine externen Befehle erforderlich sind, eine eindeutige Kennung wie zufällige UUIDs in XeLaTeX zu generieren?
Antwort1
Da XeTeX derzeit keine native Zufallszahlenunterstützung hat, brauchen wir random.tex
; binhex.tex
hilft auch.
\documentclass{article}
\input{random}
\input{binhex}
\makeatletter
\newcount\temp@uuid
\newcommand{\makeUUID}[1]{%
\@ifdefinable{#1}{\make@UUID{#1}}%
}
\newcommand{\make@UUID}[1]{%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{\nhex{4}{\temp@uuid}}%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{#1\nhex{4}{\temp@uuid}-}%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{#1\nhex{4}{\temp@uuid}-}%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{#1\nhex{4}{\temp@uuid}-}%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{#1\nhex{4}{\temp@uuid}-}%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{#1\nhex{4}{\temp@uuid}}%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{#1\nhex{4}{\temp@uuid}}%
\setrannum{\temp@uuid}{0}{"10000}%
\edef#1{#1\nhex{4}{\temp@uuid}}%
% remove the following three lines if you're happy with uppercase hex digits
\lowercase\expandafter{%
\expandafter\def\expandafter#1\expandafter{#1}%
}%
}
\makeatother
\makeUUID\foo
\makeUUID\baz
\begin{document}
\ttfamily
\foo
\baz
\end{document}