为啥 Xaringan 幻灯片中没有出现智能引号和破折号?

Posted

技术标签:

【中文标题】为啥 Xaringan 幻灯片中没有出现智能引号和破折号?【英文标题】:Why are smart quotes and em-dashes not appearing in Xaringan slides?为什么 Xaringan 幻灯片中没有出现智能引号和破折号? 【发布时间】:2020-07-10 08:04:41 【问题描述】:

问题

根据文档,Xaringan 应该

    将普通引号" " 转换为智能引号“ ”,并且

    将 3 个连字符“---”的序列变成一个破折号“-”

我遇到的问题是,这些转换仅发生在 yaml 元数据中的字符串(出现在标题幻灯片中),但不会发生在普通幻灯片中的文本。

示例

文件minimal.Rmd 包含以下代码:

---
title: "\"It works, doesn't it?\" --- this is the title slide"
subtitle: "Smart quotes and em dash work in yaml"
output: 
  xaringan::moon_reader
---

# This is a normal slide

It works in the slides too, doesn't it? --- "I hope so", he said.

No, it doesn't.

编织后,我在minimal.html得到以下幻灯片:

    标题幻灯片(注意智能引号和 em-dash):

    第二张幻灯片(难看的引号和 3 个连字符):

想法

    我很确定 Xaringan 确实使用 Pandoc 来生成 html。如果过程中使用了Pandoc,默认会美化引号。

    我尝试在 yaml 元数据中使用smart: true,如RMarkdown book 所示,但没有效果。

    查看moon_reader function 的代码,我看到它调用rmarkdown::html_document 来生成html。

    这个open issue in the RMarkdown Github repository 讨论了smart: true 选项和对Pandoc 的调用中的等效选项。问题作者建议放弃 yaml 选项,让 Pandoc 来美化引号等。

    但是 Xaringan 使用 Pandoc,所以这可能是相关的吗?

我的设置

R version 3.6.3 (2020-02-29)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.4 LTS

xaringan_0.15
knitr_1.28
rmarkdown_2.1

提前感谢您的帮助。

【问题讨论】:

你是对的,对于 xaringan 幻灯片,Markdown 是通过 web 浏览器中的 remark.js 呈现的,而不是 Pandoc。 谢谢@YihuiXie。我刚刚意识到调用 pandoc 只生成标题幻灯片;这就是标题幻灯片有智能引号的原因。因此,是否需要注意美化其他幻灯片中的引号和破折号? 完全正确。 【参考方案1】:

解决方案链接

https://github.com/fnaufel/smartify

详情

毕竟,xaringanremarkjs 都不负责美化引号和破折号。

我四处寻找 javascript 解决方案来解决我的问题,但最终决定实现我自己的。在in_header.htmlafter_body.html 中添加几行代码后,您可以加载并运行我的 Javascript hack 来智能化幻灯片中的引号和破折号。无需安装任何东西。

更多详情请访问https://github.com/fnaufel/smartify。

我希望这对其他人有用。

再次感谢@YihuiXie 的cmets。

【讨论】:

这对我很有帮助,因为前几天我还在为这种行为摸不着头脑。我一定会看看你的 GitHub 存储库。

以上是关于为啥 Xaringan 幻灯片中没有出现智能引号和破折号?的主要内容,如果未能解决你的问题,请参考以下文章

Xaringan 演示文稿的演示者模式不同步

如何使用 css 文件控制 xaringan 幻灯片 rmarkdown 中标题幻灯片中的作者和日期文本

xaringan Markdown 幻灯片工具

是否有直接在代码中增加 Xaringan 幻灯片的快捷方式?

如何在 xaringan 幻灯片的全屏模式下更改内容位置

xaringan 幻灯片上的水平可滚动输出