3

reStructuredText 構文で複数のテキスト ファイルを取り、Docutils で 1 つの LaTeX ファイルを作成する Python スクリプトを作成しています。Docutils が必要のない余分な構文を大量に作成することを除けば、すべてがうまく機能します。

たとえば、単純なサブセクションを使用すると、Docutils は次のように記述します。

\subsection*{\phantomsection%
About%
\addcontentsline{toc}{subsection}{About}%
\label{about}%

私だけが必要なとき

\subsection{About}

Pandoc が追加の構文をあまり作成しないことを確認しましたが、これは CSV テーブルをサポートしていないため、自分のプロジェクトでは使用できません。

すべての docutils 設定を調べましたが、出力を制限するオプションが実際には見つかりません。必要な構文だけを作成するように Docutils を設定する方法はありますか?

4

1 に答える 1

2

私のコメントに加えて、HTMLライターをカスタマイズする方法を説明しているこのブログ投稿と同様の方法で、docutilsLaTeXライターの出力をサブクラス化docutils.writers.latex2e.Writerおよびカスタマイズできるはずです。ただし、これを調べると、HTMLライターよりもはるかに複雑に見えます。docutils.writers.latex2e.LaTeXTranslatordocutils.writers.latex2e.LaTeXTranslator

別の方法は、これらのクラスを変更することです。必要な出力を実現するには、次のようにします(これはdocutils 0.8.1用であることに注意してください)。

  1. ディレクトリをバックアップするpath/to/docutils/writers/latex2e

  2. 次のように変更path/to/docutils/writers/latex2e/__init__.pyします

    1. メソッドLaTeXTranslator.visit_titleで行を置き換えます(行2870)

      pdfanchor = '\\phantomsection%\n  '
      

      pdfanchor = ''
      
    2. メソッドLaTeXTranslator.visit_titleで行を置き換えます(行2878)

      self.context.append(self.bookmark(node) + '}\n')
      

      self.context.append('}\n')
      

:将来のバージョンのdocutilsでこれらのクラスに加えられた変更の恩恵を受けることができるように、サブクラスdocutils.writers.latex2e.Writer化することをお勧めします。docutils.writers.latex2e.LaTeXTranslator上記の方法は機能しますが、将来のバージョンで変更する必要があるかもしれません。

于 2012-04-24T16:41:20.730 に答える