跳转到主要内容

在HTML中遵守法国排版规则。

项目描述

Typographeur

在HTML中遵守法国排版规则。

状态: 测试版

Build Status Python versions: 3.6, 3.7 et 3.8

兼容性: Python 3.6, 3.7和3.8。

安装

与其他Python包一样,Typographeur可以使用pip安装,最好在virtualenv中安装

pip install typographeur

要贡献或“玩弄”此代码,请克隆GitHub存储库并在当前环境中以“dev”模式安装

git clone git@github.com:brunobord/typographeur.git
cd typographeur
pip install -e ./

使用方法

>>> from typographeur import typographeur
>>> typographeur('<p>Exemple : <em>Salut ! ça va ?</em></p>')
'<p>Exemple&nbsp;: <em>Salut&#8239;! ça va&#8239;?</em></p>'
>>> typographeur('<strong>et , entre ( parenthèses  ...) les points sans espace  .</strong>')
'<strong>et, entre (parenthèses…) les points sans espace.</strong>'

起源

这个库的目的是在HTML文档上应用法国排版的基本规则。它灵感来源于SmartyPants项目,并从中借用了一些代码。

测试

为了测试,请启动(最好在virtualenv中)

make test

一个完整的示例,展示了typographeur可以产生的修正,可以在tests/examples/目录中找到。其中包括一个包含许多排版错误的input.html文件,以及经过修正的预期结果expected.html

实现规则

  • 符号!?;必须前面有一个(且仅有一个)细空格。
  • 符号:必须前面有一个空格。
  • 在左括号后没有空格,在右括号前也没有空格。
  • 省略号 ... 被替换为字符 ;同样,我们清理双点、三点、四点甚至更多点的重复。唯一特殊的情况是,由括号包围的两个点,在引号椭圆的情况下:[..]
  • 对于感叹号或问号,规则是显示一个或三个,但不能显示两个或“n”。
  • 点(无论是点 . 还是 )或逗号(,)之前不能有空格。
  • 标准的双引号 ("") 被替换为尖括号(「」)。请注意,法式引号内部使用不可分割空格。
  • 撇号(')被改为(),并且不应跟空格。
  • 包含连字符的单词将被纠正(oeœaeæ)。为此,我们使用Dicollecte提供的词典。

为了您的乐趣,一个遵守上述规则的HTML文档将保持不变。

presampcodettkbdscriptstylemath 标签包围的块将不会进行纠正,以便代码片段显示时不会被破坏;以及避免可能的JavaScript脚本出现语法错误。请注意,自闭合标签(例如:<code />)不算作要忽略的块的开始。

参数

每个规则都可以通过 typographeur() 函数的配置来禁用。

  • fix_parenthesis:应用关于括号的规则。
  • fix_colon:应用关于冒号的规则。
  • fix_exclamation:应用关于感叹号的规则。
  • fix_interrogation:应用关于问号的规则。
  • fix_semicolon:应用关于分号的规则。
  • fix_ellipsis:应用关于省略号的规则(... → …)。
  • fix_point_space:删除点(… 或 .)之前的空间。
  • fix_comma_space:删除逗号(,)之前的空间。
  • fix_double_quote:将双引号转换为尖括号。
  • fix_apostrophes:将“打字机”撇号转换为“印刷”撇号。
  • fix_nbsp:不可分割空格不会被转换为HTML实体,而保持原样。
  • fix_nuples:对多个感叹号和问号应用规则。
  • fix_title_points:应用禁止在标题末尾使用点的规则。
  • fix_oe:对包含 œ 的单词应用连字符规则。
  • fix_ae:对包含 æ 的单词应用连字符规则。
  • ligature_variant:指定用于连字符纠正的词典的变体。有4种:‘经典’、‘现代’、‘1990年改革’和‘所有变体’(默认)。

命令行工具

安装后,该包提供了一个命令行工具。使用示例

$ echo '<p>Salut! ça va?</p>' | typographeur
<p>Salut&#8239;! ça va&#8239;?</p>

也可以将一个或多个文件作为参数传递

$ typographeur input1.html input2.html

默认情况下,typographeur() 函数的所有参数都启用。可以通过以下选项禁用它们

  • --skip-parenthesis,
  • --skip-colon,
  • --skip-exclamation,
  • --skip-interrogation,
  • --skip-semicolon,
  • --skip-ellipsis,
  • --skip-point-space,
  • --skip-comma-space,
  • --skip-double-quote,
  • --skip-apostrophes,
  • --skip-nbsp,
  • --skip-nuples,
  • --skip-title-points.
  • --skip-oe.
  • --skip-ae.
  • --ligature-variant.

所有可用选项都可以通过

$ typographeur --help

限制

这个库的目标保持简单:有些排版规则可能永远无法实现,我们也不追求完美。它将始终是一种“写作辅助”,但没有任何东西可以完全替代手动应用这些规则。参考书籍或网站数不胜数,试图列出所有都是徒劳的:简单的搜索就会让你信服。祝你好运!

支持纯文本或Markdown

注意:我们非常遗憾地放弃了Markdown的支持。到目前为止的尝试包括通过正则表达式以最简单的方式遍历内容来管理简单的块。但不可逾越的障碍是表格(在Github Flavored Markdown和其他解析器中可用)。

在我们的项目中:一个第三方库,它将使用Markdown解析器来渲染“排版”Markdown。请保持关注!

其他实现

在其他编程语言中已实现了类似的功能。请注意

其他资源

Grammalecte是LibreOffice、Firefox和Thunderbird的扩展,可帮助纠正(包括)排版错误。

许可

本项目可自由使用,发布在MIT许可下。


英文版:现在,这个Python(3.6、3.7和3.8)库试图应用基本的法语排版规则。它深受SmartyPants的启发,并从它那里借用了很多代码。

MIT许可证。

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

typographeur-0.5.0.tar.gz (15.4 kB 查看哈希

上传时间

构建分布

typographeur-0.5.0-py3-none-any.whl (11.3 kB 查看哈希

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面