3

ラテックスでは、コマンドを使用して新しいページを作成できます\newpage。Scribble でこれを直接行う方法はないようです (少なくとも PDF/Latex バックエンドではそうではありません)。

では、scribble を強制的にドキュメントの新しいページにするにはどうすればよいでしょうか?

4

1 に答える 1

2

はい、これは可能です。ただし、これは少し不格好であり、latex ファイル (または pdf ファイル) にレンダリングする場合にのみ機能します。これは Web ページには意味がないためです。私がこれをしなければならなかった元の方法は、LaTeXに行きました。ただし、これを完全に落書きのままにする方法があることがわかりました。どちらを好むかは明らかにコンテキストに依存するため、ここでは両方のオプションを示します。

オプション 1: 完全にフリーハンド オプション

これが機能する方法は、名前に文字列を含むスクリブルスタイルを使用することです。そうすることで、スタイルが LaTeX 環境またはコマンドに変わります (それを何に入れるかに応じて異なります)。この場合、コマンドが必要なので、element. 結果のコードは次のようになります。

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

これで、必要な場所で関数を使用できるようにnewpageなり、ラテックスは\newpage.

オプション 2: 生のラテックスを挿入します。

もう 1 つのオプションは、落書きファイルに生のラテックス コードを少し挿入することです。これを行うには、最初に次のようにファイルを作成する必要がありますtextstyle.tex

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

ファイルの名前は問題ではなく、その中に他のコマンドが含まれていても問題ありません。これは、与えられた同じテキストに評価されるラテックス コマンドを作成するためのものです。

次に、落書きコードのどこかに、次の 2 つの関数を作成できます。

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

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

最初の関数はexact、latex コードを挿入するために使用できる を定義します。これが機能するのexact-charsは、スタイルが文字をそのままラテックスに渡し、いかなる種類のプリプロセッサにも渡さないためです。identityラテックスにテキストを入れるための框が必要です。

次に、関数はラテックスにnewpage直接変換されます。コード内の必要な場所で(またはアット式を使用する場合は/として)\newpage呼び出すだけです。(newpage)@newpage[]@(newpage)

最後に、ファイルの場所を scribble に指示する必要がありtexstyle.texます。++stylescribble を実行しているときに、フラグを使用してそれを行うことができます。全体として、コマンドは次のようになります。

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"))
于 2016-08-23T18:51:19.143 に答える