moodle.sty 不会将 tikz 图形插入 xml 输出文件

moodle.sty 不会将 tikz 图形插入 xml 输出文件

我想生成要导入到 Moodle 平台的测验。测验包括 tikz 绘图。

我在 Windows 10 上使用带有 TeX Live 2020/W32TeX 的 moodle 2021/01/04 57334 v0.8 包。当我运行 pdflatex 时,会生成 .pdf 和 .xml 文件而没有任何错误消息,但 base64 编码的图像不包含在 xml 输出文件中。moodle.sty 所需的所有命令都已安装(ghostscript、imagemagick 和 optipng)。所有 tikz 输出文件(..-tikztemp-1.pdf、..-tikztemp-1.png、..-tikztemp-1、..-tikztemp-1.aux、..-tikztemp-1.dpth、..-tikztemp-1.log、..-tikztemp-1.md5)都在输入 .tex 文件的目录中生成。文件 ..-tikztemp-1 包含应插入 xml 文件的编码图像。手动将 ..-tikztemp-1 的内容复制到 xml 文件中会生成一个可成功导入 Moodle 平台的 xml 文件。

这是一个示例文件.tex

\documentclass[12pt]{article}
\usepackage[section,tikz]{moodle}

\usepackage{amsmath,amssymb,esint}

\usepackage[american,siunitx,smartlabels,EFvoltages]{circuitikz}
\begin{document}
    \begin{quiz}[points=10,penalty=0.5]{Trial}
        \begin{shortanswer}[points=30]{EC-P001}
            For the electric circuit below, obtain the equivalent resistance at the terminals a-b.
            \begin{center}\begin{tikzpicture}\draw
                    (0,3) node[left]{a} to[R, l^=\SI{25}{\ohm}, o-] ++(3,0)
                    to[R, l^=\SI{10}{\ohm}] ++(3,0)
                    to[R, l^=\SI{20}{\ohm}] ++(3,0) -- ++(1,0)
                    to[R, l^=\SI{15}{\ohm}] ++(0,-3)
                    to[short, -o] (0,0) node[left]{b}
                    (3,3) to[short, *-] ++(0,1.5)
                    to[R, l^=\SI{30}{\ohm}] ++(6,0)
                    to[short, -*] ++(0,-1.5)
                    (6,3) to[R, l^=\SI{5}{\ohm}, *-*] ++(0,-3)
                    ;\end{tikzpicture}
            \end{center}
            \item 36.25 Ohm
        \end{shortanswer}
    \end{quiz}
\end{document}

我运行pdflatex.exe -synctex=1 -shell-escape -interaction=nonstopmode。pdflatex 的相关输出是

...
===== 'mode=convert with system call': Invoking 'pdflatex -shell-escape -halt-o
n-error -interaction=batchmode -jobname "file-tikztemp-1" "\def\tikzexternalrealjob{file}\input{file}"' ========
runsystem(pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname
 "file-tikztemp-1" "\def\tikzexternalrealjob{file}\input{file}")...executed.

\openout5 = `file.auxlock'.

<file-tikztemp-1.pdf, id=29, 331.72932pt x 158.65575pt>
File: file-tikztemp-1.pdf Graphic file (type pdf)
<use file-tikztemp-1.pdf>
Package pdftex.def Info: file-tikztemp-1.pdf  used on input line 97.
(pdftex.def)             Requested size: 331.72852pt x 158.65535pt.
moodle.sty: Converting picture 'file-tikztemp-1.pdf' to PNG...
runsystem(gswin64c.exe -dBATCH -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=file-tikztemp-1.png -r150 file-tikztemp-1.pdf)...executed.

moodle.sty: Optimizing 'file-tikztemp-1.png'...
runsystem("C:\Portable Program Files\OptiPNG\optipng.exe" file-tikztemp-1.png)...executed.

moodle.sty: Converting 'file-tikztemp-1.png' to base64...
runsystem(certutil -encode "file-tikztemp-1.png" tmp.b64 && findstr /vbc:"---" tmp.b64 > "file-tikztemp-1" && del tmp.b64")...executed.

moodle.sty: Reading base64 file 'file-tikztemp-1.enc'...
moodle.sty: base64 data saved.
\openout5 = `file.auxlock'.
...

但是在 xml 输出文件中不包含解码的 base64 图像,我只得到应该插入图像的以下位置:

... <IMG SRC="data:image/png;base64,"> ...

谢谢

答案1

尝试执行以下操作:将您的发行版文件moodle.sty与测试文件一起复制到当前目录中。

编辑该文件,在第 3330 行左右,你会发现:

\def\cmdline{\baselxiv\otherspace -encode "#1#2"\otherspace tmp.b64 && findstr /vbc:"---" tmp.b64 > "#1" && del tmp.b64"}%

尝试将其更改为:

\def\cmdline{\baselxiv\otherspace -encode "#1#2"\otherspace tmp.b64 && findstr /vbc:"---" tmp.b64 > "#1.enc" && del tmp.b64"}%

(注意添加的.enc)并重试。

这已经被报告为一个错误:https://framagit.org/mattgk/moodle/-/issues/81

相关内容