如何在RMarkdown LaTeX文档中编写特殊字符?

6

我正在尝试使用RMarkdown pdf撰写论文。但我不知道如何使用特殊字符,例如“İ, ı, ğ, ü, ö”。这些字符在土耳其语中很常见。我可以很容易地在Latex中使用它们,例如\u{g} - ğ,\c{c} - ç,\"{u} - ü,{\i} - ı等。

请问我该如何在RMarkdown中做到同样的效果?

另外,您知道哪里可以找到一些RMarkdown论文或书籍模板吗?


这很大程度上取决于您的环境。答案可能是创建它们,无论您如何生成它们并将它们键入到StackOverflow中 - 使用组合键?(在Linux上,我可以很容易地使用Compose-"-u或Compose-,-c获得ü或ç。我可以使用带有caron的g ǧ(Compose-c-g),ğ(Compose-U-g)...) - Ben Bolker
5个回答

11

土耳其字符的HTML代码将会有效(来自维基百科的示例):

---
title: "My doc"
output: pdf_document
---

HTML      char  detail                            anglicized
-------   --    ------------------------------    ---
Ğ   Ğ       Uppercase "G" with breve accent   gh1
İ     İ     Uppercase dotted "I"²               i (as in "tree")
Ş     Ş     Uppercase "S" with cedilla          sh
ğ     ğ     Lowercase "g" with breve accent   gh1
ı     ı     Lowercase dotless "i"³              ou (as in "in")
ş     ş     Lowercase "s" with cedilla          sh
-------   --    -------------------------------   --

将PDF呈现为如下所示:

enter image description here

有关文章模板,请参见rticles包,或自己创建

有关书籍模板,请查看pandoc电子书gitbookbookdown


我最初建议的这个xelatex选项不会适用于土耳其字符:

xelatex引擎推荐使用的类型。然后,您可以通过mainfont参数访问系统字体:

---
title: "My doc"
output:
  pdf_document:
    latex_engine: xelatex
mainfont: "name of your system font that has all those characters"
---

PDF output will be in the font you specify. 

Just type as normal with no special codes.

不用谢,表达在Stackoverflow上获得有用答案的正常方式是接受答案 - Ben
我刚意识到这对于İ、Ş、Ğ、ı、ş、ğ无效。它们仍然显示为I、S、G、i、s、g。你有任何想法吗?提前致谢。 - ilker_arslan
没错,另一个选项是HTML代码,我已将其添加到我的答案中。 - Ben

4

我猜这个问题本身已经过时了。截至目前(rmarkdown V1.4 / knitr V1.15.1), knitr自动按照这个问题的建议包含内容。

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

在LaTeX输出的导言部分(注意:这意味着您的文档编辑器必须使用UTF-8编码,但例如RStudio默认使用UTF-8编码),

然后这将按预期工作:

---
title: "Test"
output: pdf_document
---

Here are some special characters: İ ı Ş Ğ ş ğ ö ü

这并不是万能药,因为许多脚本仍需要更多的调整(我尝试过韩语、中文和日语)。如果您需要更多的多样化字体,请参见 此处,了解如何加强导言部分。


3

rmarkdown使用LaTeX创建PDF文档,因此您应该可以直接使用LaTeX标记。以下是一个示例:

---
title: "Test"
output: pdf_document
---

This is a special character: \u{g}.

此外,根据特定的字符,您可能只需按原样键入它们(请参见此处)。

1
这对于ğ、Ğ、ş和Ş是可以的,但对于İ和ı则不起作用。.{I} 在输出中显示为 .{I}。你有什么想法如何解决它吗? - ilker_arslan

1

0

可能已经有点晚了,但我想在现有的惊人而直接的答案中添加一些东西。这个答案不仅适用于pdf_documents,还适用于html_word_documents

解决方案:使用

  1. 基本R函数capture.output()cat()
  2. Unicode符号

示例:考虑写入ñ。快速查看https://www.compart.com/en/unicode/U+00F1,给出了ñU+00F1代码。在R中,这是\u00f1。一个MWE如下所示。

---
title: "Minimum Working Example"
author: "Mr. John Ate`r capture.output(cat('\u00f1'))`o"
output:
  pdf_document: default
  word_document: default
  html_document: default
---

## Some Example of Printing `r capture.output(cat('\u00f1'))`

This is an inline output of `r capture.output(cat('\u00f1'))`.

简化:每次使用capture.output(cat())都很繁琐,所以我们可以定义一个自定义函数,比如说

diac <- function(x) {
  capture.output(cat(x))
}

然后如下内联使用:`r diac('\u00f1')`


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接