如何将 \url 和特殊字符保存到标记列表中?

如何将 \url 和特殊字符保存到标记列表中?

我正在努力修复zepinglee/citeproc-lua#30可以简化如下。.bbl生成的文件citeproc-lua包含引文和参考书目,并由 LaTeX 读取\begin{document}(对于非 LuaTeX 引擎)。文件thebibliography中的内容.bbl保存到标记列表中,然后用于输出或回归测试。但是,如果thebibliography包含带有\url百分号等特殊字符的 s,则此过程会失败。我该如何让它工作?

此外,引文结果包含在.bblfrom中citeproc-lua,它们也会被保存以供命令使用\cite。在注释样式的参考书目中,引文可能包含\urls,这是一个类似的问题。

\documentclass{article}

\usepackage{xparse}
\usepackage{url}

\ExplSyntaxOn
\tl_new:N \l__csl_bibliography_tl
\RenewDocumentEnvironment { thebibliography } { m +b }
  {
    \tl_set:Nn \l__csl_bibliography_tl {#1}
  }
  { }
\NewDocumentCommand { \printbibliography } { }
  {
    \tl_use:N \l__csl_bibliography_tl
  }
\ExplSyntaxOff

\begin{document}

\begin{thebibliography}{1}
  Foo 20\% bar \url{foo%20bar}
\end{thebibliography}

\printbibliography
% Expect the same output as:
% Foo 20\% bar \url{foo%20bar}

\end{document}

上述代码出现错误。

Runaway argument?
\begin   Foo 20\% bar \url {foo\end {thebibliography} \par \printbibliography \
ETC.
! File ended while scanning use of \environment thebibliography .
<inserted text> 
                \par

相关内容