首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法输出pdf_book中的unicode字符(预订)

无法输出pdf_book中的unicode字符(预订)
EN

Stack Overflow用户
提问于 2020-11-28 11:02:53
回答 1查看 167关注 0票数 2

我正在尝试在bookdown项目中kable呈现的表中使用复选标记unicode字符( checkmark )。MWE包含以下两个文件(index.Rmd、preamble.tex),它们是生成的最小预订项目的一部分。

index.Rmd

代码语言:javascript
运行
复制
    --- 
    title: "A Minimal Book Example"
    subtitle: "subtitle"
    lang: fr
    author: "Yihui Xie"
    date: "`r Sys.Date()`"
    site: bookdown::bookdown_site
    documentclass: book
    mainfont: Arial
    mathfont: Arial
    bibliography: [book.bib, packages.bib]
    biblio-style: apalike
    link-citations: yes
    subparagraph: yes
    description: "This is a minimal example of using the bookdown package to write a book. The output format for this example is bookdown::gitbook."
    ---
    
    ```{r setup, include=FALSE}
    # Set locale to french for month and day names (calendar plots)
    Sys.setlocale(locale = 'French')
    
    # Load all needed libraries
    if(!require('pacman'))install.packages('pacman')
    pacman::p_load(kableExtra)
    ```
    
    (ref:O3) O~3~
    
    # Prerequisites
    
    ✓
    
    ```{r stations-polluants, echo=FALSE}
    stations_polluants_table <- data.frame(
      stations = c("41B001", "41B004", "41B011", "41MEU1", "41N043", "41R001", "41R002", "41R012", "41WOL1", "Total / polluant"),
      O3   = c("", rep("✓", 5), "", rep("\u2713", 2), "7")
    )
    kable(stations_polluants_table, col.names = c("Station", "(ref:O3)"), booktabs = T, align = "c", caption = "Caption text") %>%
      row_spec(0, bold = T) %>%
      row_spec(10, bold = T) %>%
      collapse_rows(columns = 1, latex_hline = "major", valign = "top")
    ```
    
    
    ```{r include=FALSE}
    # automatically create a bib database for R packages
    knitr::write_bib(c(
      .packages(), 'bookdown', 'knitr', 'rmarkdown'
    ), 'packages.bib')
    ```

preamble.tex

代码语言:javascript
运行
复制
\usepackage{booktabs}

\newfontfamily{\unicodefont}{Arial Unicode MS}
\usepackage{newunicodechar}
\newunicodechar{✓}{{\unicodefont{✓}}}

通过使用rmarkdown::render_site(output_format = 'bookdown::pdf_book', encoding = 'UTF-8')在PDF中编译,可以注意到✓在文本中正确呈现,而在生成的表中被替换。我还试图在表中使用\u2713,但没有取得更多的成功。

我做错什么了?请注意,即使首选输出是PDF,我也希望编译为gitbook (因此Rmd文件需要保持独立于输出格式)。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-01 20:44:05

经过一段时间的澄清之后,解决方案只是在bookdown中使用文本引用,即(ref:check) ✓,并在表中使用该引用。

index.Rmd

代码语言:javascript
运行
复制
    ```{r setup, include=FALSE}
    # Set locale to french for month and day names (calendar plots)
    Sys.setlocale(locale = 'French')
    
    # Load all needed libraries
    if(!require('pacman'))install.packages('pacman')
    pacman::p_load(kableExtra)
    ```
    
    (ref:O3) O~3~
    
    # Prerequisites
    
    ✓

    (ref:check) ✓
    
    ```{r stations-polluants, echo=FALSE}
    stations_polluants_table <- data.frame(
      stations = c("41B001", "41B004", "41B011", "41MEU1", "41N043", "41R001", "41R002", "41R012", "41WOL1", "Total / polluant"),
      O3   = c("", rep("(ref:check)", 5), "", rep("(ref:check)", 2), "7")
    )
    kable(stations_polluants_table, col.names = c("Station", "(ref:O3)"), booktabs = T, align = "c", caption = "Caption text") %>%
      row_spec(0, bold = T) %>%
      row_spec(10, bold = T) %>%
      collapse_rows(columns = 1, latex_hline = "major", valign = "top")
    ```
    
    
    ```{r include=FALSE}
    # automatically create a bib database for R packages
    knitr::write_bib(c(
      .packages(), 'bookdown', 'knitr', 'rmarkdown'
    ), 'packages.bib')
    ```
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65048884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档