pgl*_*lpm 5 macros latex quarto
我正在制作一本以 HTML 和 pdf 形式呈现的四开本书籍。HTML 由具有单独qmd文件的多个页面组成。\\newcommand整本书应该使用一组通过 s 定义的 LaTeX 宏。LaTeX 使用 MathJax 渲染。
尝试了三种不同的方法:
\nA \xe2\x80\x93 将宏插入每个文件的开头qmd。这样,宏在使用时可以正确显示,但有两个缺点:每个qmd文件中重复宏定义(而且它们很多),并且 XeTeX 抱怨已经定义的命令。
B \xe2\x80\x93 在单独的文件中定义宏,并通过插入macros.qmd在其他文件的开头调用该公共文件qmd
{{< include macros.qmd >}}\nRun Code Online (Sandbox Code Playgroud)\n正如四开本指南中所解释的那样。这成功地在 HTML 中正确生成了宏,但 XeTeX 仍然抱怨已经定义的命令。\xe2\x80\x93 我想替换\\newcommand为\\providecommand可以解决这个问题。
C \xe2\x80\x93macros.qmd使用文件include-in-body:中的选项或类似选项调用文件,如this、this和this问题_quarto.yml的答案中所建议的。例如:
format:\n html:\n include-in-body: macros.qmd\nRun Code Online (Sandbox Code Playgroud)\n或者
\nformat:\n html:\n include-in-body:\n - text: {{< include macros.qmd >}}\nRun Code Online (Sandbox Code Playgroud)\n但渲染器似乎没有加载这些宏定义(XeTeX 也看不到它们)。
\n我想知道是否有一个简单的解决方案适用于 HTML 和 XeTeX,并避免文本冗余(在作者这边),例如重复定义或调用外部文件。我的印象是,许多使用 Quarto 进行数学/物理的作者都会面临这个问题。
\n我会使用你的选项 C,但使用include-in-header, 例如
project:
type: book
book:
title: "testbook"
author: "Jane Doe"
date: "23.11.2022"
chapters:
- index.qmd
- intro.qmd
format:
html:
include-in-header:
- file: macros.html
pdf:
include-in-header:
- text: |
\newcommand{\foo}{E=mc^{2}}
Run Code Online (Sandbox Code Playgroud)
和macros.qmd:
---
format: html
---
::: {.hidden}
$$
\newcommand{\foo}{E=mc^{2}}
$$
:::
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |