bibtex 文件中带有 % 的 \hyphenatedurl

bibtex 文件中带有 % 的 \hyphenatedurl

如何使用

@misc{kraft,
author = "Kraft, Nathan",
title = "Mr Kraft's Virtual Filing Cabinet",
year = "2015",
howpublished = "\hyphenatedurl{http://mrkraft.wikispaces.com/Mr+Kraft%27s+Virtual+Filing+Cabinet}"
}

(注意 howpublished 中的 % )在 ConTeXt 中?如果我输入\%27s,那么我会得到\%27pdf。如果没有转义,我会得到错误。

答案1

这是 ConTeXt 的一个错误。首先,\hyphenatedurl无法处理%(这似乎是设计使然)。其次,btx 机制将%BibTeX 文件中的注释字符视为注释字符,并删除其后的所有内容(我在邮件列表)第三,你正在滥用howpublished并且应该使用该url领域。

作为一种解决方法,只需进行 URL 解码%27即可'

\startbuffer[references]
  @misc{kraft,
    author = "Kraft, Nathan",
    title = "Mr Kraft's Virtual Filing Cabinet",
    year = "2015",
    url = "http://mrkraft.wikispaces.com/Mr+Kraft's+Virtual+Filing+Cabinet"
  }
\stopbuffer

\setupinteraction[state=start]

\usebtxdataset[references.buffer]
\usebtxdefinitions[apa]

\starttext

\nocite[kraft]
\placelistofpublications

\stoptext

在此处输入图片描述


如果你真的想滥用该howpublished字段,另一种解决方法是让对方\hyphenatedurl知道\%你的意思是%。请注意缺少的超链接!

\startbuffer[references]
  @misc{kraft,
    author = "Kraft, Nathan",
    title = "Mr Kraft's Virtual Filing Cabinet",
    year = "2015",
    howpublished = "\hyphenatedurl{http://mrkraft.wikispaces.com/Mr+Kraft\%27s+Virtual+Filing+Cabinet}"
  }
\stopbuffer

\setupinteraction[state=start]

\usebtxdataset[references.buffer]
\usebtxdefinitions[apa]

\appendtoks
  \let\%\letterpercent
\to \everyhyphenatedurl

\starttext

\nocite[kraft]
\placelistofpublications

\stoptext

在此处输入图片描述


另一个巧妙的解决方案是在输出参考书目时将类别代码设置为%“其他”。这样你就不必%在 bib 文件中转义了。

\startbuffer[references]
  @misc{kraft,
    author = "Kraft, Nathan",
    title = "Mr Kraft's Virtual Filing Cabinet",
    year = "2015",
    url = "http://mrkraft.wikispaces.com/Mr+Kraft%27s+Virtual+Filing+Cabinet"
  }
\stopbuffer

\setupinteraction[state=start]

\usebtxdataset[references.buffer]
\usebtxdefinitions[apa]
\setuplist[btx][before={\catcode\commentasciicode\othercatcode}]

\starttext

\nocite[kraft]
\placelistofpublications

\stoptext

在此处输入图片描述

相关内容