繁體
|
簡體
Sclub交友聊天~加入聊天室當版主
(檢舉)
分享
新浪微博
QQ空间
人人网
腾讯微博
Facebook
Google+
Plurk
Twitter
Line
标题:
能不能做一个latex的模板,然后填充内容作为参数?
[打印本页]
作者:
abababa
时间:
2018-9-8 21:00
标题:
能不能做一个latex的模板,然后填充内容作为参数?
标题说得不太清楚。举例来说,我想做一个24题的pdf,前16题固定就是选择,中4题固定就是填空,后4题固定就是解答题。
就是想做一个latex的模板(假设叫mytemplate.tex),但是里面什么具体内容都没有,只有选择题的各种样式,比如第一行就是问题,然后后面一个小括号,是填选项用的,再换一行,写ABCD四个选项。
然后弄一个文本文件(假设叫myquestion.txt),第一行就是那个具体的问题,第二行就是那四个选项,用分号分隔。然后第三行,第四行同理,都是一行问题一行选项。
最后我想这样,latex mytemplate.tex myquestion.txt,就生成我想要的pdf文件。
这样下次做试卷的时候,我只要改myquestion.txt这个文件就行了。
听网友说这个在网页里是用xml,xsl之类的来做的,给我举了两个例子,但我勉强看懂,自己做又做不出来,而且还不是做成pdf。不知latex里有没有这样的方法。
作者:
kuing
时间:
2018-9-9 17:33
仅靠行来区分题目和选项,我不知道怎么弄,不过我想即使弄出来了也未必好用,因为这样的话题干就得一行写完,中间不能回车,这就不是很方便了。
所以我想还是在具体内容里插入一些标记来区分比较好做,下面我弄一个简单的例子。
主文件代码如下:
\documentclass{ctexart}
\usepackage{enumitem}
\input{xztkpb.tex}%选择填空排版设计
\newcount\tmcount
\newcommand\TMBT{%
\ifnum\tmcount=1\relax
\noindent 一、选择题。\begin{enumerate}
\else\ifnum\tmcount=4\relax
\end{enumerate}二、填空题。\begin{enumerate}[resume]
\else\ifnum\tmcount=7\relax
\end{enumerate}三、解答题。\begin{enumerate}[resume]
\fi\fi\fi
}
\makeatletter
\newcommand\ENDTM{\@ifstar{\end{enumerate}}{\TM}}
\makeatletter
\long\def\TM#1==={\global\advance\tmcount by1\relax
\TMBT\item#1\ENDTM}
\long\def\xz#1;#2;#3;#4;{\fkh\xx{#1}{#2}{#3}{#4}}
\begin{document}
\input{test.tex}
\end{document}
复制代码
代码中读入了两个文件:
(1)xztkpb.tex 是我以前弄的选择填空排版设计,代码较长就贴附件好了:
xztkpb.tex
(1.64 KB)
下载次数: 1622
2018-9-9 17:31
(2)test.tex 就是题目内容,其格式如下:
\TM
选择一
\xz 选项1;选项2;选项3;选项4;
===
选择二
\xz 选项1;选项2;选项3;选项4;
===
选择三
\xz 选项1;选项2;选项3;选项4;
===
填\tk 空一。
===
填\tk 空二。
===
填\tk 空三。
===
解答一
===
解答二
===
解答三
===*
复制代码
另外,这里我把前两部分设成了三题,你可以修改主文件的第9、11行的那两个数字来设置题数。
注意最后一题的 === 后面有个 * ,代表结束,这是必须要有的。
效果:
下载
(34.98 KB)
2018-9-9 17:37
附件:
xztkpb.tex
(2018-9-9 17:31, 1.64 KB) / 下载次数 1622
http://kuing.orzweb.net/attachment.php?aid=6601&k=764ddeb5728c704cd20fb264646b31d5&t=1713573406&sid=C4p7Tj
图片附件:
QQ截图20180909173708.png
(2018-9-9 17:37, 34.98 KB) / 下载次数 471
http://kuing.orzweb.net/attachment.php?aid=6602&k=472129341c3c11a7c3afb571e9d3f596&t=1713573406&sid=C4p7Tj
作者:
abababa
时间:
2018-9-9 21:18
回复
2#
kuing
谢谢,就是类似这样的。一时我还理解不了,先下载了回去好好琢磨一下。
作者:
kuing
时间:
2018-9-10 01:44
忘了说,由于选项用分号分隔,万一选项的内容恰好含有分号,则需要用 { } 括起来。
比如 \xz {选;项1};选项2;选项3;选项4; 酱紫。
同理,如果题干或选项含有 === 也得用 { } 括起来,当然这个不太可能出现,这也是我选它作为分隔的原因。
欢迎光临 悠闲数学娱乐论坛(第2版) (http://kuing.orzweb.net/)
Powered by Discuz! 7.2