Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I write special characters in RMarkdown latex documents?

I am trying ot write a paper in RMarkdown pdf. But I dont know how to use special characters like "İ, ı, ğ, ü, ö". Those characters are present in Turkish. I can easily use them in Latex using e.g. \u{g} – ğ, \c{c} – ç, \”{u} – ü, {\i} – ı, etc.

Could you please tell how can I do the same in RMarkdown?

And where can I find some Rmarkdown paper or book templates?

like image 239
ilker_arslan Avatar asked Nov 08 '14 19:11

ilker_arslan


People also ask

How do you type special characters in RMarkdown?

5.2 Special characters If you want any special characters in R Markdown, LaTeX, or pandoc to appear as text, rather than having them perform some function, you need to “escape” them with a backslash. For example, pound signs/hashtags, backslashes, and dollar signs need to be preceded by a backslash.

How do I use Unicode in RMarkdown?

In order for emoji to work in Rmarkdown, you must change the file encoding of the Rmd document. Go to File -> Reopen with encoding, then select UTF-8. Once you have ensured the file is open in UTF-8 encoding, you should be able to compile with emoji support.

Can I use LaTeX code in R Markdown?

By default, Pandoc will preserve raw LaTeX code in Markdown documents when converting the document to LaTeX, so you can use LaTeX commands or environments in Markdown.


4 Answers

HTML codes for Turkish characters will work (example from wikipedia):

---
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
-------   --    -------------------------------   --

Which renders the PDF like this:

enter image description here

For article templates, see the rticles package, or make your own

For book templates, have a look at pandoc ebook, gitbook and bookdown


This xelatex option I initially suggested will not work for Turkish characters:

The xelatex engine is recommended for this kind of thing. Then you can access your system fonts with the mainfont argument:

---
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.
like image 198
Ben Avatar answered Oct 01 '22 21:10

Ben


I guess this question per se is obsolete. As of now (rmarkdown V1.4 / knitr V1.15.1), knitr automatically follows the advice of this question and includes

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

in the preamble to LaTeX output (caveat: of course this means that your document editor will have to be using UTF-8, but e.g., RStudio does that by default).

Then this works as expected:

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

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

This is not a panacea, as many scripts still require more tinkering (I tried Korean, Chinese, and Japanese). See here for where to start on bolstering the preamble in case you need more multifarious fonts.

like image 45
MichaelChirico Avatar answered Oct 01 '22 20:10

MichaelChirico


rmarkdown uses LaTeX to create the PDF, so you should be able to just use LaTeX markup. As an example:

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

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

Also, depending on the particular characters, you may be able to just type them in as-is (see, for example, here).

like image 41
Thomas Avatar answered Oct 01 '22 22:10

Thomas


If you need special characters for other languages in addition to Turkish, looks like you can type in the code listed at this webpage:

http://www.starr.net/is/type/htmlcodes.html

Be sure to include the ;

like image 26
K Bro Avatar answered Oct 01 '22 20:10

K Bro