我女儿需要按照LEA 视力图表测试。
我已经手动为她创建了一个新图表,但随机化四个图标并手动对齐它们确实需要很长时间:
我正在考虑使用 LaTeX 来自动化这个过程。我把这四个图标都作为单独的 PDF(当然,也可以从中派生出任何其他矢量格式)。有人愿意帮我做这个吗,因为我认为这更像是一个“编程 LaTeX”任务,而不是“用 LaTeX 写作”的任务;)我很乐意与我的一位儿科医生好友分享结果,因为我认为这也可能对其他人有所帮助(他们分发了某人在 80 年代收到的传真的旧副本...... - 不是很干净,也没有多大帮助)。
如果有人能帮助我,我将不胜感激。每条线之间的距离和尺寸的减小可以猜测,但应该是可以改变的。
答案1
实现此目的的一种方法是使用pgfmathdeclarerandomlist{<list name>}{{order 1}{order 2}...{order 24}}
指定图片的所有可能组合,然后\pgfmathrandomitem
随机选择其中一个并将其用作图片的顺序。
图像被放置在一个带有 的表中\TableRow{<scale>}
,其中<scale>
指定要应用于该行图像的比例。
笔记:
- 要增加行间距,您可以在每行末尾添加一个尺寸。例如:
\\[0.3cm]
。
进一步增强:
- 可能的组合数组应该自动生成。
代码:
为了使其正常工作,我将图像保存为1.png
、、,2.png
并保存在该文件所在的目录中。3.png
4.png
.tex
\documentclass{article}
\usepackage{graphicx}
\usepackage{xstring}
\usepackage{pgf}
% All possible combination of pictures
% Listed here in increasing numerical order for convenience
\pgfmathdeclarerandomlist{MyRandomList}{%
{1234} {2134} {3124} {4123}
{1243} {2143} {3142} {4132}
{1324} {2314} {3214} {4213}
{1342} {2341} {3241} {4232}
{1423} {2413} {3412} {4312}
{1432} {2431} {3421} {4321}
}
\newcommand{\MaxWidth}{2.0}% width in cm
\newcommand{\MaxHeight}{2.0}% height in cm
\newcommand*{\MyIncludeGraphics}[3]{% #1= scale
\pgfmathsetmacro{\Width}{#1*\MaxWidth}%
\pgfmathsetmacro{\Height}{#1*\MaxHeight}%
\StrChar{#2}{#3}[\FigureToInclude]% Extract digit from the 4 digit random number
\includegraphics[width=\Width cm, height=\Height cm]{\FigureToInclude}%
}%
\newcommand*{\TableRow}[1]{%
\pgfmathrandomitem{\RamdomMemberOfList}{MyRandomList}
\xdef\OrderOfPictures{\RamdomMemberOfList}
\MyIncludeGraphics{#1}{\OrderOfPictures}{1} &
\MyIncludeGraphics{#1}{\OrderOfPictures}{2} &
\MyIncludeGraphics{#1}{\OrderOfPictures}{3} &
\MyIncludeGraphics{#1}{\OrderOfPictures}{4}
}%
\begin{document}
\begin{tabular}{c c c c}
\TableRow{1.0}\\
\TableRow{0.8}\\
\TableRow{0.6}\\
\TableRow{0.4}\\
\TableRow{0.3}\\
\TableRow{0.2}\\
\TableRow{0.1}\\
\end{tabular}
\end{document}