如何为四开本书籍全局定义 LaTeX 宏?

问题描述 投票:0回答:2

我正在制作一本以 HTML 和 pdf 形式呈现的四开本书籍。 HTML 由多个带有单独

qmd
文件的页面组成。整本书应该使用一组通过
\newcommand
定义的 LaTeX 宏。 LaTeX 使用 MathJax 渲染。

尝试了三种不同的方法:

A – 将宏插入到每个

qmd
文件的开头。这样,宏在使用时可以正确显示,但有两个缺点:在每个
qmd
文件中重复宏定义(而且它们很多),并且 XeTeX 抱怨已经定义的命令。

B – 在单独的

macros.qmd
文件中定义宏,并通过插入
 在其他 
qmd

文件的开头调用该通用文件
{{< include macros.qmd >}}

在每一个中,如四开本指南中所解释的那样。这成功地在 HTML 中正确生成了宏,但 XeTeX 仍然抱怨已经定义的命令。 – 我想用 \newcommand

 替换 
\providecommand
 可以解决这个问题。

C – 使用

macros.qmd

include-in-body:
 文件中的类似选项调用 
_quarto.yml
 文件,如 
thisthisthis 问题的答案中所建议。例如:

format: html: include-in-body: macros.qmd

format: html: include-in-body: - text: {{< include macros.qmd >}}
但是渲染器似乎没有加载这些宏定义(XeTeX 也看不到它们)。

我想知道是否有一个简单的解决方案适用于 HTML 和 XeTeX,并避免文本冗余(在作者方面),例如重复定义或调用外部文件。我的印象是,许多使用 Quarto 进行数学/物理的作者都会面临这个问题。

macros latex quarto
2个回答
3
投票
我会使用你的选项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}}

macros.qmd

:

--- format: html --- ::: {.hidden} $$ \newcommand{\foo}{E=mc^{2}} $$ :::
    

0
投票
我面临着与@pglpm同样的问题,我同意这不是一个小烦人的问题。 更系统的解决方案有进展吗?

© www.soinside.com 2019 - 2024. All rights reserved.