al-folio 如何为波斯语、阿拉伯语页面启用 RTL 从右到左渲染? 📅 发布时间:2026/9/14 15:45:48 👁 浏览次数: al-folio 如何为波斯语、阿拉伯语页面启用 RTL 从右到左渲染【免费下载链接】al-folioA beautiful, simple, clean, and responsive Jekyll theme for academics项目地址: https://gitcode.com/GitHub_Trending/al/al-folio如果你在基于 al-folio面向学术用途的 Jekyll 模板搭建的个人站点中要发布波斯语fa或阿拉伯语ar内容需要让整页从右到左渲染——不只是正文文字导航栏、页脚、滚动条位置也要镜像。自 v1.2 起al-folio 通过al_rtl插件版本1.0.0支持这一能力只需在页面 front matter 中把lang设为对应的 RTL 语言代码构建后的页面就会在根元素上应用dirrtl。本文基于仓库内 v1.2 发布说明、RTL 示例文章 和集成测试 test/integration_new_plugins.sh 给出完整的启用与验证步骤。准备条件确认 al_rtl 插件已就位al_rtl是 v1.2 引入的新插件v1.1 及更早版本没有它且默认处于关闭状态直到某个页面通过 front matter 选择加入。al-folio v1.x 的插件启用是双层门控gem 必须同时出现在两个列表中功能才会生效缺任何一个都不会报错只是静默不渲染见 docs/ARCHITECTURE.md 中 Failure modes 一节Gemfile 中group :al_folio_plugins下的版本固定声明当前 starter 已包含gem al_rtl, 1.0.0_config.yml 的plugins:列表中的激活项当前 starter 已包含- al_rtl。如果你的站点是 v1.2 之前创建的需要按 v1.2 发布说明 的 Upgrading 一节操作。注意该文档明确提示单独执行bundle update不会完成升级因为Gemfile把所有插件固定到了精确版本你必须先手动编辑版本固定值在Gemfile的插件组中添加gem al_rtl, 1.0.0在_config.yml的plugins:列表中追加plugins: - al_rtl安装并验证bundle install bundle exec al-folio upgrade audit bundle list | grep al_rtl最后一条命令应能看到al_rtl (1.0.0)出现在已安装 gem 列表中仓库的 Gemfile.lock 中也记录了al_rtl (1.0.0)。为单个页面启用 RTL在 front matter 中声明语言启用方式是按页面进行的在该页面的 front matter 中加入lang取值为你要使用的 RTL 语言代码。以波斯语为例参照仓库自带的示例文章 _posts/2022-10-15-rtl.md--- layout: post title: یک نوشتهٔ راستچین date: 2022-10-15 10:00:00 description: نمونهای از پشتیبانی زبانهای راستچین tags: internationalization formatting lang: fa ---阿拉伯语页面则把lang设为ar。v1.2 发布说明列出的可用取值包括fa波斯语、ar阿拉伯语、he希伯来语、ur乌尔都语、ps普什图语、sd、ug、yi等默认识别的 RTL 语言集合还包括库尔德语等完整清单见示例文章的说明。站点级默认语言_config.yml中的lang: en不需要修改页面 front matter 中的lang只对该页面生效未声明 RTL 语言的英文页面不会被标记为 RTL。可选收窄 RTL 语言列表al_rtl默认识别的是一套 RTL 语言代码。如果你希望只让特定语言触发 RTL 渲染可以按 RTL 示例文章 中给出的配置覆盖这个列表al_rtl.langs用于替换默认集合见 docs/ARCHITECTURE.md 的插件委托表al_rtl: langs: [fa, ar]不修改时使用默认列表即可这是一项可选配置。构建并验证渲染结果本地构建本地开发方式见 docs/INSTALL.mdbundle exec jekyll build构建完成后验证分两部分。仓库的集成测试 test/integration_new_plugins.sh 就是按同样标准断言的下面以仓库示例文章对应的构建产物_site/blog/2022/rtl/index.html为例你自己站点中请替换为该 RTL 页面实际的输出路径# 1. html 根元素上应有 dirrtl而不是只包在一个 div 上 grep -E html[^]*dirrtl _site/blog/2022/rtl/index.html # 2. html 上应带有对应语言的 lang 属性 grep -E html[^]*langfa _site/blog/2022/rtl/index.html # 3. 页面应引用 RTL 样式表且该文件真实存在于构建产物中 grep assets/al_rtl/css/rtl.css _site/blog/2022/rtl/index.html test -f _site/assets/al_rtl/css/rtl.css echo rtl.css published # 4. 反向检查英文页面不应出现任何 RTL 标记 grep dirrtl _site/index.html第 1、2、3 条命令应有匹配输出第 4 条命令应没有输出英文页未被标记 RTL也未加载 RTL 样式表。再执行bundle exec jekyll serve在浏览器中打开该页面自己的站点默认在http://localhost:4000直观确认正文从右向左排布导航栏、页脚、滚动条位置整体镜像。之所以把dir放在html而不是包裹正文的div上正是为了让导航栏、页脚、滚动条以及浏览器自身的 bidirectional 算法都参与镜像而不只是文章文字。边界与限制代码与公式保持从左到右代码块、shell 输出、BibTeX 条目和渲染后的数学公式在 RTL 正文中会刻意保持 LTR。这是有意设计——若让它们继承rtl运算符和标点顺序会被打乱。示例文章中的 Python 代码块和E mc^2等公式均按此规则渲染。静默失败如果 gem 只加在了Gemfile而没进_config.yml的plugins:或反过来页面不会报错只是 RTL 不生效。排查顺序参照 docs/ARCHITECTURE.md先确认两份列表都包含al_rtl再确认页面 front matter 的lang取值在识别列表内。该插件不改变站点其他页面的行为未声明 RTL 语言的页面输出与升级前一致rtl.css也只发布给需要的构建产物。验证通过dirrtl在html上、rtl.css已发布、英文页面不受影响后即可按 docs/INSTALL.md 的部署章节把站点发布出去RTL 属性随静态 HTML 一起输出线上行为与本地构建一致。【免费下载链接】al-folioA beautiful, simple, clean, and responsive Jekyll theme for academics项目地址: https://gitcode.com/GitHub_Trending/al/al-folio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考