biber 图灵完备吗?

biber 图灵完备吗?

我想知道 biber 是否从 TeX 继承了图灵完备性。

为了证明图灵完备性(不要求内存无限),我们需要模拟一个图灵完备的设备(比如艾伦·图灵定义的 TM,规则110HTML5+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 井号似乎也不可能。

向读者提问

  1. 是否有可能在 biber 中定义递归算法?
  2. 如果没有,biber 中是否有任何可用的迭代循环命令?
  3. 如果没有,我们可以使用任何基于 TeX 的引用工具来实现图灵完备的设备吗?(BibLaTeX/bibtex/biber/multibib/bibtopic 的任意组合)

更新:我对图灵完备性的观点是,例如,无限循环是可能的,我认为这是某些解释 bib 文件的服务器应用程序的“漏洞”。我从工具列表中删除了 xindy,因为它只与索引有关。

答案1

我不知道这是否回答了你的问题,也不知道为什么如果你不能使用.bib文件来利用某些东西,你会感到失望。我也不明白为什么图灵完备性应该是利用容量的必要条件,也不明白你对图灵完备设备的概念是什么。

然而,如果你想知道你是否可以

  1. .bib在条目中定义宏
  2. 编译一个.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 编译时不会出错,从而生成

嵌套在 <code>.bib</code> 条目中的宏的输出

\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}

将导致

嵌套宏输出中的粗体数字

相关内容