生成角色练习表

生成角色练习表

我目前正在学习日语,由于日语有不同的字符,所以我正在做一些练习,制作一个表格,其中每个单元格包含其中一个字符的发音,下面有一个空白框,我可以在打印表格后输入字符。

一个盒子

问题是我希望每次字符的顺序都不同,所以我正在寻找一种方法,这样我就可以创建一个 LaTeX 文档,该文档在编译时会给出一个像上图一样填充的页面,其中每个 A 都是给定列表中的某个项目。

如果 LaTeX 无法自行创建随机性,那么从其他地方提供随机性也是可以的,比如我简单地输入时间的单独文档或命令行参数。

如果这能让流程更简单,我创建了以下模板,希望文档能够遵循该模板。如果将\nextchar宏替换为从一组给定字符中随机挑选一个字符的宏,我的问题就会得到解答。

\documentclass[a4paper]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{easytable}

\newcommand{\nextchar}{{\Huge A}}

\begin{document}
\pagenumbering{gobble}
\begin{center}
  \begin{TAB}(e,12ex,5ex){|c|c|c|c|c|c|c|c|c|c|}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
  \end{TAB}
\end{center}
\end{document}

答案1

这是一个基于 LuaLaTeX 的解决方案。您必须将字符存储到charlist(变量)中,如下所示。然后它将计算列表并使用您的\nextchar宏随机选择字符。

随机表

\documentclass[a4paper]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{easytable}

\directlua{
    charlist = {"A","B","C","D","E","F","G"}
    maxv = 0
    for _ in pairs(charlist) do maxv = maxv + 1 end
}
\newcommand{\nextchar}{{\Huge%
    \directlua{
        tex.print(charlist[math.random(1,maxv)])
    }
}}

\begin{document}
\pagenumbering{gobble}
\begin{center}
  \begin{TAB}(e,12ex,5ex){|c|c|c|c|c|c|c|c|c|c|}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
    \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar & \nextchar \\
              &&&&&&&&&\\
  \end{TAB}
\end{center}
\end{document}

相关内容