摇尾蛇的bibtex参考

wagtail-references的Python项目详细描述


摇尾引用Build Status

基于bibtex的书目条目,如wagtail片段

模板

“但是,模板在哪里?!“是一个自然的问题。答:目前还没有任何模板或标记… 我在无头模式下运行我所有的摇尾装置,前端有一个反应,所以只能证明 用于管理wagtail上的引用的模板(目前)。但请看下面的介绍。

如果你想和tmplates做公关,我非常愿意合作:)

我正在逐步改进wagtail管理模板,随着库获得更多的吸引力和用户,我将做得更好。 底线:如果您使用或喜欢,可以在github上启动这个repo,所以我知道它正在获得牵引力!

在前端显示参考

编写自己的模板/html

我使用citation.js来解析和显示bibtex 在wagtail管理中,它可以在浏览器(模板)中使用,如下所示:

<!-- Using citation.js https://citation.js.org/api/tutorial-getting_started.html --><scriptsrc="https://cdn.jsdelivr.net/npm/citation-js"type="text/javascript"></script><scripttype="text/javascript">constCite=require('citation-js')functionrenderToDiv(inputBibtex,divId){constcitation=newCite(inputBibtex)constoutputHtml=citation.format('bibliography',{format:'html',template:'apa',lang:'en-US'})outputDiv=document.getElementById(divId)outputDiv.innerHTML=outputHtml}</script><h3><strong>Slug (citation key):</strong> {{ reference.slug }}</h3><h3><strong>Type:</strong> {{ reference.bibtype }}</h3><divid="{{ reference.slug }}"></div><scripttype="text/javascript">renderToDiv("{{ reference.bibtex_string }}","{{ reference.slug }}")</script>

使用react(无头模式下的摇尾)

在前端,我使用react(参见前面提到的在无头模式下使用wagtail的nanorant)。我现在正在使用 react-citeproc连同 biblatex-csl-converter在一个项目中 好。您的组件将如下所示:

importReactfrom'react'import{Bibliography}from'react-citeproc'importrawfrom'raw.macro'import{BibLatexParser,CSLExporter}from'biblatex-csl-converter'conststyle=raw('assets/csl/apa-style.csl')constlocale=raw('assets/csl/xml-locale.xml')classReferenceextendsReact.Component{constructor(props){super(props)this.state={bibtex:undefined,csl:undefined,}}staticgetDerivedStateFromProps(nextProps,prevState){if(nextProps.bibtex!==prevState.bibtex){constparser=newBibLatexParser(nextProps.detail.bibtex,{processUnexpected:false,processUnknown:false})constcsl=newCSLExporter(parser.output).parse()return{bibtex:nextProps.detail.bibtex,csl,}}returnnull}render(){return(<divclassName={classes.bibliography}><Bibliographystyle={style}locale={locale}items={this.state.csl}/></div>)}}exportdefaultReference

路线图

我想包括:

  • 更好的代码片段编辑器,可能使用json编辑器组件,并允许用户在tex和json之间切换
  • 用于将多个引用序列化为bibjson集合的ListSerializer
  • HTML呈现程序和视图集

要求

在django 2.1或更高版本和wagtail 2.3或更高版本上测试wagtail引用。

支持的版本

Python:3.6

django:2.1

摇尾巴:2.3

开始

从PIP安装:

pip install wagtail_references

添加到INSTALLED_APPS

INSTALLED_APPS=[...'wagtail_references',...]

运行迁移:

python manage.py migrate wagtail_references

参考模型

只有一个数据库模型Reference,它在wagtail中注册为一个片段,使它可以搜索 可选择。

弹头

模型有一个(必需的,唯一的)slug字段,当引用 添加。

例如,如果您有以下bibtex条目:

@article{Clark2017a,
author = {Clark, Thomas H. E. and Lueck, Rolf G. and Hay, Alex E. and Davey, Thomas and Stern, Peter and Horwitz, Rachel},
journal = {Proc. of the 12th European Wave and Tidal Energy Conference},
pages = {7},
title = {{InSTREAM : Measurement , Characterisation and Simulation of Turbulence from Test Tank to Ocean .}},
year = {2017}
}

弹头将自动设置为clark-lueck-hay-davey-stern-horwitz-2017,并附加-2-3等 保持独特性。

bibtex条目的引文键将更新为相应的:

@article{clark-lueck-hay-davey-stern-horwitz-2017,
author = ... etc etc ...
}

在表单验证和数据库级别强制实现唯一性。创建引用后,可以手动编辑段塞。

bibtex和bibjson

引用模型包括一个bibtex字段(包含bibtex字符串raw)和一个bibjson字段。 是的,我知道这是重复数据。但我宁愿这样做,也不愿每次 想以不同的形式序列化它。我本可以选择把它存起来,但是我不知道你有多少记忆 如果你正在管理大量的推荐信,人们已经不想破坏你的缓存了)。这是一个判决电话。 用例和替代解决方案?提出问题。

如果有postgres,bibjson以json的形式存储,否则作为字符串存储(感谢^{})。

django设置

可以在SETTINGS.py中定义以下设置:

  • wagtailreferences_convert_bibtex(默认值:False)在保存新记录之前,该记录将被同质化为 严格的乳胶。这将强制转换为Unicode,并添加大括号以强制大写。
  • wagtailreferences_enable_unicode(默认值:True)如果启用,诸如"C{\"o}ze"的项将转换为 它们的Unicode等价物。如果在乳胶渲染引擎中使用条目,则不需要这样做。如果你是 使用它们来呈现HTML(whicH你可能是,这毕竟是一个网络CMS),你可能想要这个。
  • wagtailreferences_collection_name(默认值:None)将默认集合名称应用于以bibjson形式呈现的记录。

示例

为了您和我们的测试目的,手头有一些示例很有用,因此我在examples.py文件中准备了一些示例,其中只包含一系列不同的bibtex引用。

如果您遇到不方便的引用或无法验证的引用,请将它们发布到github问题中,以便我帮助诊断并添加它们以进行测试。

谢谢

感谢internaut提供bibtex json转换器。他们的代码没有授权,所以除了说声谢谢,我不知道该怎么写!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在wicket中创建元素<a>   java如何将字节/整数转换为十六进制以雕刻文件   javajavafx:为什么不管我传递给'textArea'的是什么类型的'changeListener'都无法编译。getKeyPressedProperty()。addListener`   java自定义Listview性能不佳,Listview项名称从数据库转换   单元测试java。lang.AssertionError:响应内容   java如何使用highchart缩放条形图?   RouterFunction中的java Why谓词字段。DefaultRouterFunction<T extends ServerResponse>类获取DefaultErrorWebExceptionHandler?   java我可以用Map<String,Integer>覆盖Map<Integer,Integer>吗?   java Log4j文件已创建但为空   java无法解析JavaCV中的导入   Sun PKCS11实现的java 64位替代方案   java Hibernate与JDO makeTransient的等价物是什么   java从嵌套的switch语句退出到外部switch语句   java Android保留一个位图作为更改色调、对比度、饱和度等的源   java Mule ESB 3.5创建ws-client时出错   java数组循环将自身乘以1024   java数据库自动更新失败   java递归ConcurrentHashMap。ComputeFabSent()调用永远不会终止。Bug还是“功能”?   java是否为调用方方法中正在处理的异常执行hibernate回滚事务?