我想知道 biber 是否从 TeX 继承了图灵完备性。
为了证明图灵完备性(不要求内存无限),我们需要模拟一个图灵完备的设备(比如艾伦·图灵定义的 TM,规则110,HTML5+CSS3或类似物)。
我的初步测试
让我们从基础开始。我们使用 进行编译pdflatex mwe && biber mwe && pdflatex mwe && pdflatex mwe
。
问题:我们能数一数吗?
% cat mwe.tex && echo "-----" && cat mwe.bib
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\bibliography{mwe}
\begin{document}
As discussed in Wang's paper~\cite{wang2004}.
\printbibliography
\end{document}
-----
@article{wang2004,
title={\newcounter{h}\setcounter{h}{4}Collisions for Hash Functions MD\theh, MD\stepcounter{h}\theh, HAVAL-128 and RIPEMD.},
author={Wang, Xiaoyun and Feng, Dengguo and Lai, Xuejia and Yu, Hongbo},
journal={IACR Cryptology ePrint Archive},
volume={2004},
pages={199},
year={2004}
}
回答:是的,有效。
问题:控制序列/定义怎么样?
% cat mwe.tex && echo "-----" && cat mwe.bib
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\bibliography{mwe}
\begin{document}
As discussed in Wang's paper~\cite{wang2004}.
\printbibliography
\end{document}
-----
@article{wang2004,
title={\def\prefix{MD}Collisions for Hash Functions \prefix4, \prefix5, HAVAL-128 and RIPEMD.},
author={Wang, Xiaoyun and Feng, Dengguo and Lai, Xuejia and Yu, Hongbo},
journal={IACR Cryptology ePrint Archive},
volume={2004},
pages={199},
year={2004}
}
回答:是的,它有效。
问题:那么函数呢?因此控制序列带有参数?这应该为我们的计算设备提供递归。
% cat mwe.tex && echo "-----" && cat mwe.bib
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\bibliography{mwe}
\begin{document}
As discussed in Wang's paper~\cite{wang2004}.
\printbibliography
\end{document}
-----
@article{wang2004,
title={\def\prefixed#1{MD#1}Collisions for Hash Functions \prefixed{4}, \prefixed{5}, HAVAL-128 and RIPEMD.},
author={Wang, Xiaoyun and Feng, Dengguo and Lai, Xuejia and Yu, Hongbo},
journal={IACR Cryptology ePrint Archive},
volume={2004},
pages={199},
year={2004}
}
回答:哦,该死,这一次失败了。
! Illegal parameter number in definition of \NewValue.
<to be read again>
1
l.39 ...fixed{4}, \prefixed{5}, HAVAL-128 and RIPEMD.}
? X
No pages of output.
Transcript written on mwe.log.
显然,井号在 biber 中无效。\catcode
-ing 井号似乎也不可能。
向读者提问
- 是否有可能在 biber 中定义递归算法?
- 如果没有,biber 中是否有任何可用的迭代循环命令?
- 如果没有,我们可以使用任何基于 TeX 的引用工具来实现图灵完备的设备吗?(BibLaTeX/bibtex/biber/multibib/bibtopic 的任意组合)
更新:我对图灵完备性的观点是,例如,无限循环是可能的,我认为这是某些解释 bib 文件的服务器应用程序的“漏洞”。我从工具列表中删除了 xindy,因为它只与索引有关。
答案1
我不知道这是否回答了你的问题,也不知道为什么如果你不能使用.bib
文件来利用某些东西,你会感到失望。我也不明白为什么图灵完备性应该是利用容量的必要条件,也不明白你对图灵完备设备的概念是什么。
然而,如果你想知道你是否可以
.bib
在条目中定义宏- 编译一个
.tex
引用该条目的文件并无错误地执行宏
那么,是的。您只需要正确数量的井号来补偿所涉及的宏的隐式嵌套。
例如
\begin{filecontents}{\jobname.bib}
@article{wang2004,
title={Collisions for Hash Functions\def\prefixed####1{MD####1} \prefixed{4}, \prefixed{5}, HAVAL-128 and RIPEMD.},
author={Wang, Xiaoyun and Feng, Dengguo and Lai, Xuejia and Yu, Hongbo},
journal={IACR Cryptology ePrint Archive},
volume={2004},
pages={199},
year={2004}
}
\end{filecontents}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\bibliography{\jobname}
\begin{document}
As discussed in Wang's paper~\cite{wang2004}.
\printbibliography
\end{document}
使用 pdfLaTeX -> Biber -> pdfLaTeX 编译时不会出错,从而生成
和
\begin{filecontents}{\jobname.bib}
@article{wang2004,
title={Collisions for Hash Functions\def\prefixed####1{MD\textbf{####1}} \prefixed{4}, \prefixed{5}, HAVAL-128 and RIPEMD.},
author={Wang, Xiaoyun and Feng, Dengguo and Lai, Xuejia and Yu, Hongbo},
journal={IACR Cryptology ePrint Archive},
volume={2004},
pages={199},
year={2004}
}
\end{filecontents}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\bibliography{\jobname}
\begin{document}
As discussed in Wang's paper~\cite{wang2004}.
\printbibliography
\end{document}
将导致