pybtex 是否支持 .bib 文件中的重音/特殊字符?

2024-04-29

from pybtex.database.input import bibtex
parser = bibtex.Parser()
bibdata = parser.parse_file("sample.bib")

上面的代码片段在解析 .bib 文件时效果非常好,但它似乎不支持重音字符,例如{\"u} or \"{u}(来自 LaTeX)。只是想确认 pybtex 是否支持。

例如,根据LaTeX/特殊字符 http://en.wikibooks.org/wiki/LaTeX/Special_Characters#Escaped_codes and 参考书目中的“ä”以及其他元音变音和重音字母如何书写? https://tex.stackexchange.com/a/57745/13513, \"{o}应该转换为ö,也是如此{\"o}.


Update:从 0.20 版本开始,pybtex 现在支持此功能。

目前还没有。但是您可以在使用 pybtex 处理之前使用 Latex 编解码器读取 bib 文件,例如和https://pypi.python.org/pypi/latexcodec/ https://pypi.python.org/pypi/latexcodec/该编解码器将为您将(多种)LaTeX 命令转换为 unicode。

但是,您必须在后处理阶段删除括号。为什么?为了优雅地处理 bibtex 代码,\"{U} has被转换成{Ü}而不是进入Ü以防止标题中出现小写。以下示例演示了此行为:

import pybtex.database.input.bibtex
import pybtex.plugin
import codecs
import latexcodec

style = pybtex.plugin.find_plugin('pybtex.style.formatting', 'plain')()
backend = pybtex.plugin.find_plugin('pybtex.backends', 'latex')()
parser = pybtex.database.input.bibtex.Parser()
with codecs.open("test.bib", encoding="latex") as stream:
    # this shows what the latexcodec does to the source
    print stream.read()
with codecs.open("test.bib", encoding="latex") as stream:
    data = parser.parse_stream(stream)
for entry in style.format_entries(data.entries.itervalues()):
    print entry.text.render(backend)

其中 test.bib 是

@Article{test,
  author =       {John Doe},
  title =        {Testing \"UTEST \"{U}TEST},
  journal =      {Journal of Test},
  year =         {2000},
}

这将打印 Latexcodec 如何将 test.bib 转换为 unicode(为了可读性而进行编辑):

@Article{test,
   author = {John Doe}, title = {Testing ÜTEST {Ü}TEST},
   journal = {Journal of Test}, year = {2000},
}

接下来是 pybtex 渲染的条目(在本例中,生成乳胶代码):

John Doe.
\newblock Testing ütest {Ü}test.
\newblock \emph{Journal of Test}, 2000.

如果编解码器去掉括号,pybtex 就会错误地转换大小写。此外,在(病理)情况下,例如journal = {\"u}显然括号也不能被移除。

一个明显的缺点是,如果渲染到非 LaTeX 后端,则必须在后处理阶段删除括号。但无论如何你可能想要这样做来处理任何特殊的 LaTeX 命令(例如\url)。如果 pybtex 能够以某种方式为您做到这一点,那就太好了,但目前还不行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pybtex 是否支持 .bib 文件中的重音/特殊字符? 的相关文章

随机推荐

  • 使用 CSS“display:inline”时换行

    我已经成功获得了 p 跟随一个 p
  • 正则表达式-如何删除“和”之间的逗号?

    如何删除 双引号 和 双引号 之间的 逗号 就像有 a b c d d e f 然后从这里开始 在 和 之间有一个逗号应该被删除 删除该逗号后它应该是 a b c dd e f 在 C 中的正则表达式的帮助下 EDIT 我忘记指定引号之间可
  • SceneKitpresentScene(_withTransition:incomingPointOfViewcompletionHandler) 与动态加载的 SCNScene 崩溃

    我试图从一个场景过渡到另一个场景 但是当我打电话时presentScene有车祸 场景不存储在类中或引用 它们直接加载到presentScene call Screenshot of crash in Xcode 我的简单的最小项目在这里
  • 如何使用 POI 读取和编辑巨大的 Excel 文件?

    我需要执行以下操作 1 复制一个巨大的1400 1400的excel文件 并制作一份副本 2 读取复制的文件并添加新的列和行 同时进行编辑 3 这将是一个独立的程序 而不是在服务器上 我有内存占用低和性能快的限制 我读了一些书并发现了以下内
  • 这是创建一个聪明的宏来自动对 C 中的某些内容进行基准测试的方法吗?

    我想知道是否可以创建一个聪明的宏来自动在 C 中运行 进程 并仅使用 C 假设我有一个像这样的小结构 typedef struct pbench char description 256 int nbenchs double times P
  • XML 到字符串列表

    我有一些代码需要放入 C 中的字符串列表中 我正在从 XML 文件中读取这些代码 它的布局如下所示
  • 使用动态 SQL 检索表结构

    我正在迁移数据库 并尝试将表结构信息检索到单个行项目中以进行机器处理 由于技术原因 现有的迁移工具无法使用 必须采用这种方式处理 我已在多个表上成功运行以下查询 SELECT LISTAGG column name data type da
  • 设置最大 CUDA 资源

    我想知道是否可以设置 CUDA 应用程序的最大 GPU 资源 例如 如果我有一个 4GB GPU 但希望给定的应用程序只能访问 2GB 如果它尝试分配更多 就会失败 理想情况下 这可以在进程级别或 CUDA 上下文级别上设置 不 目前没有允
  • Facebook 从应用程序选项卡获取用户 ID

    Facebook 应用程序可以有一个选项卡 用户可以根据需要将其添加到其个人资料的选项卡中 我如何获取 uid 或以其他方式识别当前登录的用户以便为他自定义布局 谢谢 如前所述here http developers facebook co
  • 使用 Loggly 时在 log4net 中指定应用程序名称

    我正在测试几个 ASP NET Web 应用程序 并使用 Log4net 的附加程序通过 Loggly 设置它们 现在 日志记录似乎没问题 但我似乎找不到一种方法 使用 log4 loggly 附加程序 来指定应用程序名称 以便当我在 Lo
  • 如何列出运行时函数的所有调用?

    有什么办法可以list 在VS中显示 写入文件 所有来电者 对象 函数 一个函数的当程序运行时 可能使用调试器 我需要record 所有通话 包括来电者 一个函数的从计划启动到终止 简单扫描源代码或二进制文件不做这份工作因为该程序可以作为服
  • 如何用VB.net生成pdf文件?

    我想生成一个非常简单的报告 其中包含一些图像和文本 我想知道是否有一种方法可以使用 vb net 生成 pdf 文件 您可以使用 Visual Studio 附带的 Crystal Reports 对象导出到 PDF 文件
  • Java 切片数组与 Python 中一样

    我有一个 Java 字节数组 需要获取其中的一部分 我想以与使用 Python 列表相同的方式使用 Java 数组 即使用切片 Java中有类似的东西吗 先感谢您 您可以使用数组 https docs oracle com en java
  • Tkinter:为按钮和标签制作“类”

    因此 我在 tkinter 框架中几乎有许多不同的按钮和标签 并且我都希望它们具有相似的属性 假设我希望它们全部具有红色前景色 并具有透明背景 我什至可以这样做吗 这个透明背景仅适用于按钮 我可不可以有一个class对于按钮 我认为这是在
  • match_none 有什么用?

    我浏览了docs https www elastic co guide en elasticsearch reference current query dsl match all query html query dsl match no
  • UML三元关联实现java代码[重复]

    这个问题在这里已经有答案了 三元关联是结构关系 指定一个事物的对象连接到其他两个事物的对象 我理解这种关系 但我不知道如何实现显示这三个类之间关联的方法 让我们考虑下面的例子 项目有许多使用特定编程的开发人员 语言促进发展 开发人员使用特定
  • 使用酶测试反应确认窗口

    我在 React 中有一个按钮 当用户单击它时 它会打开一个简单的确认窗口 在我添加confirm方法之前 下面的测试是绿色的 添加后确认它是红色的 我需要如何更改测试才能与附加确认一起使用 反应删除按钮 const DeleteButto
  • Django 的 TEMPLATE_DEBUG 设置有什么用?

    我一直在尝试查找有关此设置的信息 但信息不多 有人可以解释一下这个设置是什么吗 我应该在生产中关闭它吗 只是想了解它 也许我错过了 django 中的一些重要内容 我使用django 1 6 此设置有助于调试渲染模板时引发的错误 异常 如果
  • 使用 HornetQ (JBoss) 在 docker 容器上公开的 JMS 所需的端口

    我正在使用 Docker 将 JMS 服务器容器链接到另一个 JMS 客户端容器 但是当我在docker容器中运行服务器时 客户端无法正确连接到服务器 我在docker上暴露了端口443 JMS还有其他使用的端口吗 我可以成功创建目标 但不
  • pybtex 是否支持 .bib 文件中的重音/特殊字符?

    from pybtex database input import bibtex parser bibtex Parser bibdata parser parse file sample bib 上面的代码片段在解析 bib 文件时效果非