我正在尝试实现问题数据库http://www.math.canterbury.ac.nz/~m.hickman/LaTeX/LaTeX.shtml
在我的 Mac 上,我可以使用 pdflatex、bibtex、pdflatex、pdflatex 与默认文件 problems.sty、question.bst 和 SampleDatabase.bib 进行编译。
\documentclass{article}
\usepackage{problems}
\Database{SampleDatabase}
\begin{document}
\tutorial{S3}
\end{document}
在我的 Windows 电脑上,pdflatex 编译得很好,但当我运行 bibtex 时,我看到
Warning--entry type for "S3" isn't style-file defined
--line 149 of file SampleDatabase.bib
再运行 pdflatex 两次后,我得到的 pdf 只显示“教程 1。”并且没有问题陈述。回溯,这似乎是因为 Windows bibtex 说
The style file: biblatex.bst
而我的 Mac 说
The style file: question.bst
这似乎是因为 Windows aux 文件有
\bibstyle{biblatex}
而我的 Mac 有
\bibstyle{question}
我不完全清楚为什么会发生这种情况。problems.sty
\def\blx@auxinit@bibtex#1{%
\blx@auxwrite\blx@auxout@bibtex
{\def\do##1{,\blx@stripbib{##1}}}
{\ifx\blx@auxout@bibtex\@mainaux
\else
\blx@msg@aux
\fi
\string\bibstyle{question}\blx@nl
\string\bibdata{%
\blx@ctrlfile@bibtex\blxauxsuffix
\ifx#1\@empty
\else
\dolistloop#1%
\fi}\blx@nl
\string\citation{biblatex-control}}}
这看起来似乎应该做正确的事情,但显然不是。
我还发现\listfiles
,我的非工作 Windows 文件比我工作的 Mac 文件更新。但我不确定哪个文件导致以前工作正常的程序被破坏。在此期间,哪些更改会破坏以前工作的程序包?
答案1
该软件包已有近五年历史,并且破解了一些 的biblatex
内部命令。这些内部命令经历了相当多的变化,因此现在破解它们不再能按预期工作。您可以使用该软件包来解决有问题的破解问题比贝尔而不是 BibTeX。
\documentclass[11pt]{article}
\usepackage{graphicx,amsmath}
\usepackage[biber]{problems}
\Database{SampleDatabase}
\Course{MATH361}
\Year{09}
\Occurence{S1}
\TutorialNumber{1}
\TutorialDate{March 24-26}
\begin{document}
\tutorial{1-1,1-2}
\problems[prefix=*]{1-3}
\end{document}
在我使用 pdfLaTeX、pdfLaTeX、Biber、pdfLaTeX 编译时,它对我有用。请参阅Biblatex 与 Biber:配置我的编辑器以避免未定义的引用以获得有关设置编辑器以使用 Biber 的帮助。
如果你坚持使用BibTeX,你将必须修改重命名副本的question.bst
(到question-mod.bst
,比如说)使得的最后几行从FUNCTION {output:main:begin}
上改为读。
FUNCTION {output:main:begin} {
"% $ biblatex auxiliary file $" write$ newline$
"% $ biblatex bbl format version " "$Revision: 3.0 $"
#12 entry.max$ substring$ #-3 entry.max$ substring$ * " $" * write$ newline$
"% Do not modify the above lines!" write$ newline$
"%" write$ newline$
"% This is an auxiliary file used by the 'biblatex' package." write$ newline$
"% This file may safely be deleted. It will be recreated as" write$ newline$
"% required." write$ newline$
"%" write$ newline$
"\begingroup" write$ newline$
"\makeatletter" write$ newline$
"\@ifundefined{[email protected]}" write$ newline$
" {\@latex@error" write$ newline$
" {Missing 'biblatex' package}" write$ newline$
" {The bibliography requires the 'biblatex' package.}" write$ newline$
" \aftergroup\endinput}" write$ newline$
" {}" write$ newline$
"\endgroup" write$ newline$
newline$
"\datalist[entry]{none/global//global/global}" write$
}
FUNCTION {output:main:preamble} {
preamble$ empty$
'skip$
{ newline$
"\preamble{%" write$ newline$
preamble$ write$ newline$
"}" write$ newline$
}
if$
}
FUNCTION {output:main:end} {
"\enddatalist" write$ newline$
"\endinput" write$ newline$
}
EXECUTE {output:main:begin}
EXECUTE {output:main:preamble}
ITERATE {call.type$}
EXECUTE {output:main:end}
% -------------------------------------------------------------------
那么你需要
\makeatletter
\def\blx@auxinit#1{%
\blx@auxwrite\blx@aux
{\def\do##1{,\blx@stripbib{##1}}}
{\ifx\blx@aux\@mainaux
\else
\blx@msg@aux
\fi
\string\bibstyle{question-mod}\blx@nl%%%% <- insert the new name of question.bst here
\string\bibdata{%
\blx@ctrlfile\blxauxsuffix
\ifx#1\@empty
\else
\dolistloop#1%
\fi}\blx@nl
\string\citation{biblatex-control}}}
\makeatother
无论是在文档序言中,还是直接在重命名副本用problems.sty
( problems-mod.sty
) 代替\def\blx@auxinit@bibtex#1
。然后使用 加载包\usepackage{problems-mod}
。将当前日期以及您的姓名添加到每个修改文件开头的注释中,并相应地更改其标识符。
您还应该尝试联系该软件包的开发人员/维护人员,但我不确定他是否仍在致力于此。