将数据库(使用 datatool 创建)导入到 datatooltk

将数据库(使用 datatool 创建)导入到 datatooltk

我已经使用 datatool 创建了问题数据库(非常大的数据库)

\DTLnewdb{finitemath}
\long\def\newproblem#1#2#3#4#5#6#7#8#9{%
  \DTLnewrow{finitemath}%
  \DTLnewdbentry{finitemath}{seq}{#1}%
  \DTLnewdbentry{finitemath}{yr}{#2}%
  \DTLnewdbentry{finitemath}{sub}{#3}%
  \DTLnewdbentry{finitemath}{top}{#4}%
 \DTLnewdbentry{finitemath}{mar}{#5}%
\DTLnewdbentry{finitemath}{qus}{#6}%
\DTLnewdbentry{finitemath}{url}{#7}%
\DTLnewdbentry{finitemath}{exp}{#8}%
\DTLnewdbentry{finitemath}{ans}{#9}%
}

\newproblem{1}{2018}{DM}{comb}{1}{
\textbf{Which one of the following\begin{lstlisting}
 is a closed form expression for the generating function of\end{lstlisting}
the sequence $\{a_n\}$, where $a_n = 2n +3 \text{ for all } n=0, 1, 2, \dots$?}\\
$($A$)$ $\frac{3}{(1-x)^2}$\\
$($B$)$ $\frac{3x}{(1-x)^2}$\\
$($C$)$ $\frac{2-x}{(1-x)^2}$\\
$($D$)$ $\frac{3-x}{(1-x)^2}$\\
}{\url{http://gatefreaks.com/index.php?qa=9036&qa_1=dm-gate-2015-3-1}}{.}{Ans:d}

数据库有 9 个不同的列。我有 10 个这样的数据库文件。我使用主文件来合并所有这些数据库,当我编译它时,输出一个排序的 pdf 文件(根据任何字段)。但编译需要几个小时。有什么方法可以提高效率吗?

我读到过一些文章说可以使用 datatooltk 来完成此操作。但我不知道如何将我的数据库导入 datatooltk?还有其他方法吗?

答案1

确保您至少拥有 1.8 版(2018-01-26)datatooltk。您至少还需要 Java 7。(Java 8是当前版本。

要安装datatooltk,请下载datatooltk-installer.jar从 CTAN 中下载并运行。如果您的操作系统将.jar扩展识别为 Java 应用程序,您应该能够双击或使用“打开方式...”,否则您可以从命令行安装:

java -jar datatooltk-installer.jar

有 GUI 模式和批处理模式。安装程序应在应用程序菜单中放置 GUI 版本的链接,尽管这可能会因操作系统而异。在 GUI 模式下使用文件 -> 打开并选择.tex包含问题定义的文件。运气好的话,它应该能够解析你的定义\newproblem。如果不行,请尝试替换

\long\def\newproblem#1#2#3#4#5#6#7#8#9{%

\newcommand{\newproblem}[9]{%

只要.tex文件中没有太复杂的内容,它就应该能够创建数据库。(如果文件很大,可能需要一段时间才能解析。)然后您可以将其保存到.dbtex使用另存为.... 然后您可以使用或加载.dbtex文件到您的文档中。\input\DTLloaddbtex

或者,从命令行:

datatooltk --in inputfile.tex --output outputfile.dbtex

如果需要对数据进行排序,在同一步骤中执行会更有效率。例如:

datatooltk --in inputfile.tex --sort yr --output outputfile.dbtex

当您打开一个.tex不符合该.dbtex格式的文件时,您会收到一条消息:

Quick load failed (Premature end of file. Failed to find '\newtoks\csname').
Trying again with TeX Parser Library.

这只是意味着datatooltk切换到使用 TeX 解析器库来解释文件内容,这比其默认的加载文件方法要慢.dbtex

有关的:datatool表现

相关内容