2016-08-23 138 views
3

在latex中,我可以使用\newpage命令創建新頁面。似乎沒有任何方法可以直接在Scribble中執行此操作(至少不能用於PDF/Latex後端)。使用pdf/latex後端創建新頁面

那麼,如何強制塗鴉爲我的文檔創建新頁面?

回答

2

是的,這是可行的。然而,它有點笨重,並且只在渲染到乳膠文件(或pdf文件)時才起作用,因爲這對於網頁沒有意義。我不得不這樣做的原始方式進入了LaTeX。但是,事實證明,有一種方法可以完全保留在塗鴉中。無論你喜歡什麼,顯然將取決於上下文,所以我已經把這兩個選項放在這裏。

選項1:完全在塗鴉選項

其工作原理是利用塗鴉styles有其名的字符串。這樣做會將樣式轉換爲LaTeX環境或命令(具體取決於您將其放入的內容)。在我們的示例中,我們需要命令,因此我們將使用element。生成的代碼看起來是這樣的:

(define (newpage) 
    (make-element (style "newpage" '()) 
       '())) 

現在,無論你想,你可以使用newpage功能和乳膠將插入一個\newpage

方案2:將生膠乳:

另一種選擇是插入一個位的生膠乳代碼在你的塗鴉文件。要做到這一點,首先需要創建一個文件,說:textstyle.tex,並在此文件中,提出:

\newcommand{\identity}[1]{#1} 

該文件的名稱並不重要,如果有其它命令它也是精細。這只是創建一個乳膠命令,只是評估它給出的相同文本。

接下來,在你的塗鴉碼的地方,您可以創建以下兩個功能:

(define (exact . items) 
    (make-element (make-style "identity" '(exact-chars)) 
       items)) 

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

第一個函數定義exact,我們可以用它來插入乳膠代碼。這是有效的,因爲exact-chars樣式將字符傳遞給latex逐字,並且不會通過任何類型的預處理器傳遞它。我們在這裏需要identity stile,以便膠乳有東西可以放入文本。

newpage函數然後直接轉換成乳膠中的\newpage。只需在代碼中將它稱爲(newpage)(或使用at-expressions時的@newpage[]/@(newpage))。

最後,你需要告訴塗鴉在哪裏可以找到texstyle.tex文件。運行塗鴉時,您可以使用++style標誌來完成此操作。總之,您的命令應該是這個樣子:

scribble --pdf ++style texstyle.tex mydocument.scrbl 

作爲一個額外的,如果你想要的文件編譯任何後端並不僅僅是乳膠/ PDF格式,你可以使用cond-element。這樣你就可以讓它成爲任何其他後端的空元素:

(define (exact-latex . items) 
    (cond-element [latex 
        (make-element (make-style "identity" '(exact-chars)) 
           items)] 
       [else ....])) 

(define (newpage) 
    (exact-latex "\\newpage"))