2

问题

根据文档,Xaringan 应该

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

  2. 将 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

  1. 标题幻灯片(注意智能引号和破折号):

    第一张幻灯片

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

    第二张幻灯片

想法

  1. 我很确定 Xaringan 不使用Pandoc 来生成 html。如果在这个过程中使用了 Pandoc,它会默认美化引号。

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

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

  4. Github 存储库中的这个未解决的问题RMarkdown讨论了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

在此先感谢您的帮助。

4

1 回答 1

3

链接到解决方案

https://github.com/fnaufel/smartify

细节

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

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

更多详细信息,请访问https://github.com/fnaufel/smartify

我希望这对其他人有用。

再次感谢@YihuiXie 的评论。

于 2020-04-10T18:43:29.900 回答