在 Latex 中,我可以使用 \newpage
命令创建一个新页面。似乎没有任何方法可以直接在 Scribble 中执行此操作(至少对于 PDF/Latex 后端不是。)
那么,如何强制涂鸦为我的文档创建新页面?
最佳答案
是的,这是可行的。然而,它有点笨重,并且仅在呈现为 Latex 文件(或 pdf 文件)时才有效,因为这对网页没有意义。我不得不这样做的原始方式进入了 LaTeX。然而,事实证明有一种方法可以完全保持在涂鸦中。无论您喜欢哪种方式,显然都取决于上下文,因此我将两个选项都放在这里。
选项 1:完全在涂鸦选项中
其工作方式是使用带有字符串的涂鸦 styles 作为其名称。这样做会将样式转换为 LaTeX 环境或命令(取决于您将其放入的内容。)在我们的示例中,我们需要一个命令,因此我们将使用 element
。生成的代码将如下所示:
(define (newpage)
(make-element (style "newpage" '())
'()))
现在你可以在任何你想要的地方使用
newpage
函数,并且 latex 会插入一个 \newpage
。选项 2:插入原始 latex :
另一种选择是在您的涂鸦文件中插入一些原始 latex 代码。为此,您首先需要创建一个文件,例如:
textstyle.tex
,然后在该文件中输入:\newcommand{\identity}[1]{#1}
文件的名称无关紧要,如果其中包含其他命令也没关系。这只是为了创建一个 Latex 命令,该命令仅评估其给定的相同文本。
接下来,在您的涂鸦代码中,您可以创建以下两个函数:
(define (exact . items)
(make-element (make-style "identity" '(exact-chars))
items))
(define (newpage)
(exact "\\newpage"))
第一个函数定义了
exact
,我们可以用它来插入 latex 代码。这是有效的,因为 exact-chars
样式将字符逐字传递到 Latex 中,并且不会通过任何类型的预处理器传递它。我们在这里需要 identity
stile 以便 Latex 有一些东西可以放入文本。然后将
newpage
函数直接翻译成 latex 中的 \newpage
。只需在代码中您想要的位置将其称为 (newpage)
(或使用 at 表达式时的 @newpage[]
/@(newpage)
)。最后,您需要告诉 scribble 在哪里可以找到
texstyle.tex
文件。您可以在运行 scribble 时使用 ++style
标志来做到这一点。总而言之,您的命令应该类似于:scribble --pdf ++style texstyle.tex mydocument.scrbl
另外,如果您希望文档为任何后端编译而不仅仅是 latex/pdf,您可以使用
cond-element
。这样你就可以让它在任何其他后端成为一个空元素:(define (exact-latex . items)
(cond-element [latex
(make-element (make-style "identity" '(exact-chars))
items)]
[else ....]))
(define (newpage)
(exact-latex "\\newpage"))
关于pdf - 使用 pdf/latex 后端在涂鸦中创建一个新页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39108504/