首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pdf/latex后端在scribble中创建新页面

使用pdf/latex后端在scribble中创建新页面
EN

Stack Overflow用户
提问于 2016-08-24 02:40:15
回答 1查看 395关注 0票数 3

在latex中,我可以使用\newpage命令创建一个新页面。似乎没有任何方法可以直接在Scribble中做到这一点(至少对于PDF/Latex后端是这样的)。

那么,如何强制scribble为我的文档创建新页面呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 02:51:19

是的,这是可行的。然而,它有点笨拙,只有在渲染到latex文件(或pdf文件)时才有效,因为这对网页没有意义。我最初不得不使用的方法是使用LaTeX。然而,事实证明,有一种方法可以完全保留在涂鸦中。你喜欢哪一个显然取决于上下文,所以我把两个选项都放在这里。

选项1:完全在Scribble选项中

其工作方式是使用scribble styles并使用字符串作为其名称。这样做会将样式转换为LaTeX环境或命令(取决于您将其放入的内容)。在我们的例子中,我们需要一个命令,所以我们将使用element。生成的代码将如下所示:

代码语言:javascript
复制
(define (newpage)
  (make-element (style "newpage" '())
                '()))

现在,您可以随心所欲地使用newpage函数,latex将插入一个\newpage

选项2:插入未加工的乳胶:

另一种选择是在scribble文件中插入一些原始latex代码。为此,您首先需要创建一个文件,例如:textstyle.tex,并在此文件中放入:

代码语言:javascript
复制
\newcommand{\identity}[1]{#1}

文件的名称无关紧要,如果其中也有其他命令也没问题。这只是为了创建一个latex命令,该命令的计算结果与其给定的文本相同。

接下来,在scribble代码中的某处,您可以创建以下两个函数:

代码语言:javascript
复制
(define (exact . items)
  (make-element (make-style "identity" '(exact-chars))
                items))

(define (newpage)
  (exact "\\newpage"))

第一个函数定义了exact,我们可以用它来插入latex代码。这之所以有效,是因为exact-chars样式将字符逐字传递到latex中,而不通过任何类型的预处理器。我们需要这里的identity stile,这样latex就可以放入文本了。

然后,在latex中将newpage函数直接转换为\newpage。只需在代码中将其调用为(newpage) (如果使用at-expression,则为@newpage[]/@(newpage) )。

最后,您需要告诉scribble在哪里可以找到texstyle.tex文件。您可以在运行scribble时使用++style标志来执行此操作。总而言之,您的命令应该类似于:

代码语言:javascript
复制
scribble --pdf ++style texstyle.tex mydocument.scrbl

另外,如果您希望文档针对任何后端进行编译,而不仅仅是latex/pdf,则可以使用cond-element。这样,你就可以让它在任何其他后端中成为一个空元素:

代码语言:javascript
复制
(define (exact-latex . items)
  (cond-element [latex
                  (make-element (make-style "identity" '(exact-chars))
                                items)]
                [else ....]))

(define (newpage)
  (exact-latex "\\newpage"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39108504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档