在latex中,我可以使用\newpage
命令创建一个新页面。在Scribble中似乎没有任何方法可以直接执行此操作(至少不适用于PDF / Latex后端。)
那么,我如何强制涂鸦为我的文档制作新的页面?
答案 0 :(得分:2)
是的,这是可行的。然而它有点笨重,只有在渲染到乳胶文件(或pdf文件)时才有效,因为这对网页没有意义。我必须这样做的原始方式进入了LaTeX。然而,事实证明,有一种方法可以完全用于涂鸦。无论你喜欢什么,显然都要依赖于背景,所以我在这里放了两个选项。
这种方法的工作方式是使用scribble styles,并在其名称后面加上字符串。这样做会将样式转换为LaTeX环境或命令(取决于您将其放入的内容。)在我们的示例中,我们需要一个命令,因此我们将使用element
。生成的代码如下所示:
(define (newpage)
(make-element (style "newpage" '())
'()))
现在您可以在任何地方使用newpage
功能,乳胶将插入\newpage
。
另一种选择是在您的scribble文件中插入一些原始乳胶代码。要做到这一点,首先需要创建一个文件,例如:textstyle.tex
,并在此文件中输入:
\newcommand{\identity}[1]{#1}
文件名无关紧要,如果文件中有其他命令也没关系。这只是创建一个乳胶命令,它只是评估它给定的相同文本。
接下来,在涂鸦代码的某处,您可以创建以下两个功能:
(define (exact . items)
(make-element (make-style "identity" '(exact-chars))
items))
(define (newpage)
(exact "\\newpage"))
第一个函数定义exact
,我们可以使用它来插入乳胶代码。这是有效的,因为exact-chars
样式将字符逐字传递到乳胶中,并且不会将其传递给任何类型的预处理器。我们在这里需要identity
阶梯,以便乳胶可以放入文本。
然后newpage
函数直接转换为latex中的\newpage
。只需在代码中将其称为(newpage)
(或使用at-expressions时为@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"))