You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在rmarkdown/bookdown中使用D-Din字体:如何启用全字重及格式特性

解决D-DIN字体在LuaLaTeX中无法调用全字重和特殊格式的问题

你遇到的问题确实是因为明确指定了:style=Regular——这会强制LaTeX只锁定常规样式的字体,直接阻断了粗体、斜体等变体的调用路径,甚至会影响TeX原生的连字功能(比如短破折号)。下面是具体的解决步骤:

1. 移除固定样式限制

先修改R Markdown的YAML配置,删掉mainfont和sansfont后面的:style=Regular,让LaTeX能根据文本格式自动匹配对应的字体变体:

output:
  bookdown::pdf_document2:
    latex_engine: lualatex
    mainfont: D-DIN
    sansfont: D-DIN

2. 手动指定字体变体(可选但推荐)

部分字体的粗体/斜体变体命名可能不是标准的D-DIN Bold或D-DIN Italic,这时候需要先用fc-list确认准确的字体名称:

fc-list | grep "D-DIN"

从输出里找到粗体、斜体、粗斜体的完整名称,然后创建一个preamble.tex文件,通过fontspec包明确映射这些变体:

\usepackage{fontspec}
\setmainfont[
    BoldFont={D-DIN Bold},  # 替换为你实际查到的粗体字体名称
    ItalicFont={D-DIN Italic},  # 替换为实际的斜体字体名称
    BoldItalicFont={D-DIN Bold Italic},  # 替换为实际的粗斜体字体名称
    Ligatures=TeX  # 启用TeX风格连字,包含短破折号等特殊符号处理
]{D-DIN}
\setsansfont[
    BoldFont={D-DIN Bold},
    ItalicFont={D-DIN Italic},
    BoldItalicFont={D-DIN Bold Italic},
    Ligatures=TeX
]{D-DIN}

最后在YAML中引入这个前置文件:

output:
  bookdown::pdf_document2:
    latex_engine: lualatex
    includes:
      in_header: preamble.tex

3. 验证效果

重新编译文档后,测试以下内容是否正常工作:

  • 粗体:**测试粗体**
  • 斜体:*测试斜体*
  • 短破折号:--(应渲染为标准的en dash)

这样配置后,LuaLaTeX就能正确调用D-DIN字体的所有字重和TeX连字特性了。

内容的提问来源于stack exchange,提问作者balin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:32:45