xelatex でランダムな uuid を生成する

xelatex でランダムな uuid を生成する

パッケージまたは実行に外部コマンドを必要としない単純な LaTeX スクリプトを使用して、XeLaTeX でランダム uuid のような一意の識別子を生成する簡単な方法はありますか?

答え1

XeTeX には現在ネイティブの乱数サポートがないため、random.tex; も必要binhex.texです。

\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}

ここに画像の説明を入力してください

関連情報