使用从乳胶编译生成edx拖放问题

latex2dnd的Python项目详细描述


Latex2DND
==


从输入的乳胶文件生成EDX拖放问题,包括可拖动的标签、问题图像和解决方案图像。

![示例dnd问题图像](https://github.com/mitocw/latex2dnd/raw/master/examples/example2/example2撸dnd.png"示例拖放问题:二次公式")


installation
----

pip install-e git+https://github.com/mitocw/latex2dnd.git=latex2dnd

not需要pdftoppm。使用OSX和MacBrew时:

brew安装netpbm poppler


还需要一个有效的乳胶安装。

用法
----


用法:latex2dnd[选项][文件名.tex文件名.dndspec]

选项:
--版本显示程序的版本号并退出
-h,--帮助显示此帮助消息并退出
-v,--详细详细消息
-v,--非常详细非常详细消息
-c,--可以重用标签
允许可拖动标签可重用
-s,--跳过乳胶编译
跳过LaTex编译
-d output戥dir,--output directory=output戥dir
要加载的PNG文件的目录名
-c config戥file,--config file=config戥file
configuration file
-u image戥url,--url for images=image戥url
图像的基url
-r分辨率,--resolution=resolution
dpi中png文件的分辨率(默认为300),可以将
设置为"max"以自动缩放
--cfn=custome对于拖放-
拖放检查
--输出tex最终输出应为tex文件(当输入为
a*.dndspec文件时工作)
--清除删除旧的解决方案图像文件,而tmp.pdf
--非随机不使用ra解决方案文件名中的ndom字符串

example
----


请参阅[示例目录](https://github.com/mitocw/latex2dnd/tree/master/examples)中的*.tex和*.dndspec文件。

![另一个dnd问题图像示例](https://github.com/mitocw/latex2dnd/raw/master/examples/example5/example5戋dnd.png"拖放问题示例:bloch sphere")

或:从latex2dnd/testtex目录中获取quadratic.tex,然后运行以下命令:

latex2dnd quadratic.tex-r 220-v

这将生成220dpi图像,文件为:


quadratic-dnd.xml--edx拖放问题xml
./quadratic-dnd.png--dnd问题图像
./quadratic-dnd-sol.png--dnd问题解决方案图像
9 dnd可拖动图像标签:
./quadratic-dnd-label1.png—标签"1"
./quadratic_dnd_label2.png—标签"2"
./quadratic_dnd_label3.png—标签"3"
./quadratic_dnd_label4.png—标签"4"
./quadratic_dnd_label5.png—标签"5"
./quadratic_dnd_label6.png—标签"6"
./quadratic_dnd_label7.png—标签"7"
./quadratic_dnd_label8.png—标签"8"
./quadratic_dnd_label9.png—标签"9"


使用(如果您使用的是https://github.com/mitocw/latex2edx):

\begin{edxproblem}{latex to drag and drop test}{}

\edxinclude{quadratic懔dnd.xml}


\end{edxproblem}

,并将png文件复制到/static/images/quadratic/

<乳胶宏
----

latex2dnd通过引入三个重要的新宏来工作:

1。\ ddlabel{label{name}{label{contents}
--label{name=draggable label的字母数字名称(无空格)
--label{u contents=label内容的乳胶字符串(数学正常,例如$\sqrt{a+b}$)

2。\ ddbox{box{u name}{width}{height}{label{name}
--box\u name=th的字母数字名称(无空格)e目标框
--宽度、高度=目标框的大小
--label_name=标签的名称,该标签给出了正确的标签,可放入此框中(答案)


3。\ writedLabels[height]
--height=指定标签高度的可选参数(宽度是自动的)


下面是一个示例,给出了拖放问题的乳胶代码,要求填写
二次方程根公式:

\documentcla{文章}
\n{latex2dnd}



\开始{文档}


%br/>%br/>%br/>%br/>%ddlabel{term{term{1}{{{b$}
\ddlabel{term{term{{term{term{{term{b{term{{b{{b{{b{{b{{2{{{2{2{b{b{2{$}
\ddlabel{dubsub}{$b{2\alpha}$}
\d拉贝尔{fac}{-4ac${-4ac$}
\ddlabel{facp{+4ac$}{+4ac$}
\ddlabel{ta{+2a$}{+2a$}
\ddlabel{tam{{-2a$}}

%br/>%n让所有盒子大小相同(6×4)的速记宏(6×4)使所有盒子大小相同(6×4)的速记宏(6×4)
\newommand\ddb[2]{\ddbox{1}{6ex{4ex{4ex{4ex{4ex{4ex{4ex{4}{2}

%=\ frac{\ddb{1}{term1}\pm\sqrt{\ddb{2}{term2}\ddb{3}{fac}}{\ddb{4}{4}{ta}}$$$


%output标签,固定框高
\writeddlabels[4.3ex]

\end{document}





注意,定义的标签不止是正确的标签,而是更多的标签。是的这是从上面的示例生成的XML:

<;SPAN>;
<;customresponse>;
<;拖放输入img="/static/images/quadratic/quadratic/quadratic\u dnd.png"target\u outline="false"一个/u target="true"没有标签/u bg color="rgb(222,139,238)">;
<;
<;draggable id="dubexp"icon="/static/images/quadratic/quadratic懔dnd懔label4.png"/>;
<;draggable id="dubsub"icon="/static/images/quadratic/quadratic懔dnd懔label5.png"/>;
<;draggable id="fac"icon="/static/images/quadratic/quadratic懔dnd懔label6>;
<;draggable id="facp"icon="/static/images/quadratic/quadratic懔dnd懔label7.png"/>;
<;draggable id="ta"icon="/static/images/quadratic/quadratic懔dnd懔label8.png"/>;
<;draggable id="tam"icon="/static/images/quadratic/quadratic懔dnd懔label9.png"/t;
<;目标id="1"x="70"y="19"w="123"h="74"/>;
<;!--答:=term1-->;
<;target id="2"x="283"y="19"w="123"h="74"/>;
<;!--回答=term2-->;
<;target id="3"x="427"y="19"w="122"h="74"/>;
<;!--答:=fac-->;
<;target id="4"x="249"y="129"w="122"h="74"/>;
<;!--answer=ta-->;
<;/拖放输入>;
<;answer>;
caset=[{'term1':'1'},{'term2':'2'},{'fac':'3'},{'ta':'4'}]
ca=[{"draggables":ca.keys(),"targets":ca.values(),"rule":"exact"}用于caset中的ca]
if draganddop.grade(提交n[0],加利福尼亚州):
正确=["正确"]
其他:
正确=["错误"]
<;/answer>;
<;/customresponse>;
<;解决方案>;
<;img src="/static/images/quadratic/quadratic\u sol.png"/>;
<;解决方案>;
<;。/span>;


简化的DND规格
--------


乳胶功能强大,但可能易碎。编写dnd
问题的一种更简单的方法是使用"dndspec"规范文件;这提供了dnd问题的一种简单的基于纯文本的表示法。

示例:

match_labels:g,m_1,m_2,r
bea
\frac{g m劬2}{r}
\non编号
\eea
结束表达式年关
check ru formula:g*m*m*m~2/r







\ddlabel[g]{g}{$g$}
\ddlabel[m1]{mone}{$m~1$}
\ddlabel[m2]{mtwo}{$m~2$}
\ddlabel[r]{$r$}
\ddlabel[r]{$r$}
\ddlabel[r]{$r$}{$r$}



\ddlabel[r]{%r]{$r}{$r$}

dnd表达式(带方框):

\bea
\frac{ \DDB{1}{G} \DDB{2}{mone} \DDB{3}{mtwo} }{ \DDB{4}{R} }
\nonumber
\eea

where this tex macro is automatically defined for the box:

\newcommand\DDB[2]{\DDbox{#1}{8ex}{4ex}{#2}}

and this check formula:

\DDformula{ ([1])*([2])*([3])/([4])}{g,m1,m2,r@1,1,1:20,20,20}{g*m1*m2/r}{}


放置Latex2DND。

t个匹配和干扰标签,按所需顺序显示为可拖动的标签>;
开始表达式
<;包含匹配标签的乳胶表达式,每个标签周围有空格>;
结束表达式
检查公式:<;使用m匹配标签的ATH表达式版本,用于检查>;
复选"公式"框:<;使用[]的公式,其中[]是匹配标签号;如果匹配标签出现在多个输入框中,则需要此版本>;
测试正确:计算结果应正确的公式
测试不正确:公式的计算结果应不正确
框高:可拖动标签框的高度要使用
框宽:可拖动标签框的宽度要使用
额外的页眉:一行带有额外乳胶命令的行要插入页眉(可以多次使用)

带有关键字(如匹配标签)的行上不应有前导空格/缩进。


`\ddformula{pattern}{samples}{expected}`--使用公式检查来测试拖放响应的正确性。例如:

>
\ddformula{[1]*[2]*[3]/[4]]{g,m U 1,m U 2,d@1,1,1,1,1,1:20,20,20,20,20{40}{g*m U 1*m U 2/d^2}{}

{d d test{correc{不正确}{答案{u-box{draggable{u-id}{d{d{d{d{u-id}}{g{g,m{1,m{u 2,m{1,1,1 ddformula表达式,例如

\d d test{correct}{1,2,3,4}{g,m2,m1,d2}
\ddtest{incorrect}{1,2,3,4}{g,d2,m1,m2}

notes
----


latex2dnd使用imagemagick convert命令的"-region"特性,
清除解决方案框并生成问题图像。ImageMagick的7.0.4版本似乎在处理
"-region"方面存在错误,导致忽略区域规范,从而生成空白问题图像(所有内容都被白化)。如果您遇到这个问题,一个解决方法是退回到ImageMagick的6.9.1版本。


history
----

`````
*v0.9.0:python包,单元测试
*。1:添加-c(可以重用)标志
*。2:改进框对齐和像素位置计算
*.3:将标签居中放在方框中;自定义代码,当can-reuse=true时
*.4:添加公式放坡和重力。tex示例
*.5:添加选项{隐藏公式}处理以不显示公式输入
*.6:添加选项{自定义{cfn=xxx}和--cfn=xxx命令行,用于自定义dnd result check function
*v1.0.0:为ddformula添加单元测试,自动验证是否正确检查了预期响应
*v1.1.0:实现dndspec,一种简化的dnd问题规范语言
*.1:对dndspec的更多改进;在解决方案映像文件名中使用随机字符串;添加示例
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
spring JSTL:绝对uri:http://java.sun.com/jsp/jstl/core无法在两个站点中解析。xml或与此应用程序一起部署的jar文件   java在Junit测试中找不到失败的符号   java为什么在没有同步块的情况下调用wait()、notify()或notifyAll()不是编译器错误?   使用onDraw()绘制多个位图的java Android在曲面视图上放大缩小画布   在java中比较args值和字符串   java更改文件中的特定字节   java TransformerFactory破坏<html>标记中的<input>和<br>标记   azure appinsights java自定义指标不起作用   Java泛型在实现接口的类上指定上界,接口本身指定上界   java AS400 prog和动态类路径   java应用程序截图时收到空消息   java无法从片段中获取上下文   找不到java配置单元UDF类   linux是一个提供java的接口。lang.NoClassDefFoundError   java如何使用面向对象建模创建此数据库