• R语言已解决
  • 求助:R Markdown 生成 PDF 文件时页眉不显示中文字体

问题描述

首先 yaml 里设置- \fancyhead[CO]{基于R语言的XXX软件V1.1.1源代码}页眉是正常的,中英文能都显示。如果 yaml 里使用- \fancyhead[CO]{$r params$pagehead$}则页眉里不显示中文,只显示“R V1.1.1”,其中params$pagehead在控制台能得到正确结果。感觉是字体设置问题,但是不知道怎么解决。

我的代码

这是 R Markdown 文档,文件名 CODE.Rmd,文档代码如下:

---
title: "**`r params$soft_name`**"
subtitle: "**`r params$soft_version`**"
author: "(源代码清单)"
output:
  pdf_document:
    latex_engine: xelatex
    fig_caption: TRUE
    number_sections: TRUE
    toc: FALSE
header-includes:
  - \usepackage[UTF8,fontset=fandol]{ctex}
  - \usepackage{fancyhdr}
  - \pagestyle{fancy}
  - \setlength{\headheight}{13pt}
  - \addtolength{\topmargin}{-1pt}
  - \fancyhead{} % 清空页眉
  - \fancyfoot{} % 清空页脚
  - \pagenumbering{roman} % 设置页码格式为罗马数字
  - \fancyhead[RO]{第 \thepage 页} % 在右上角显示页码
  - \fancyhead[CO]{$`r params$pagehead`$} % 在页眉中间显示标题
---

\newpage
\pagenumbering{arabic}

```{r echo=TRUE, eval=FALSE}
print("Hello world!")
```

运行以下代码编织 CODE.Rmd 文档

# 软件名称和版本
soft_name = "基于R语言的XXX软件"
soft_version = "V1.1.1"

# 生成参数列表
params = list(
  soft_name = soft_name,
  soft_version = soft_version,
  pagehead = paste0(
    soft_name, soft_version, "源代码"
  )
)

# 渲染文档
rmarkdown::render(
  input = "CODE.Rmd", 
  params = params
)

# 文档归档
xfun::dir_create("./result")
code_dest_file = paste0(
  "./result/", soft_name, "_", 
  soft_version, "_CODE", ".pdf"
)
file.rename("CODE.pdf", code_dest_file)

系统环境

xfun::session_info()
#> R version 4.3.0 (2023-04-21)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Manjaro Linux
#> 
#> 
#> Locale:
#>   LC_CTYPE=zh_CN.UTF-8       LC_NUMERIC=C              
#>   LC_TIME=zh_CN.UTF-8        LC_COLLATE=zh_CN.UTF-8    
#>   LC_MONETARY=zh_CN.UTF-8    LC_MESSAGES=zh_CN.UTF-8   
#>   LC_PAPER=zh_CN.UTF-8       LC_NAME=C                 
#>   LC_ADDRESS=C               LC_TELEPHONE=C            
#>   LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=C       
#> 
#> time zone: Asia/Shanghai
#> tzcode source: system (glibc)
#> 
#> Package version:
#>   base64enc_0.1.3   bslib_0.5.0       cachem_1.0.8      callr_3.7.3      
#>   cli_3.6.1         clipr_0.8.0       compiler_4.3.0    digest_0.6.31    
#>   ellipsis_0.3.2    evaluate_0.21     fastmap_1.1.1     fontawesome_0.5.1
#>   fs_1.6.2          glue_1.6.2        graphics_4.3.0    grDevices_4.3.0  
#>   highr_0.10        htmltools_0.5.5   jquerylib_0.1.4   jsonlite_1.8.5   
#>   knitr_1.43        lifecycle_1.0.3   magrittr_2.0.3    memoise_2.0.1    
#>   methods_4.3.0     mime_0.12         processx_3.8.1    ps_1.7.5         
#>   R6_2.5.1          rappdirs_0.3.3    reprex_2.0.2      rlang_1.1.1      
#>   rmarkdown_2.22    rstudioapi_0.14   sass_0.4.6        stats_4.3.0      
#>   stringi_1.7.12    stringr_1.5.0     tinytex_0.45      tools_4.3.0      
#>   utils_4.3.0       vctrs_0.6.3       withr_2.5.0       xfun_0.39        
#>   yaml_2.3.7

Created on 2023-06-21 with reprex v2.0.2