1

プロジェクトの文書化にSphinxを使用しています。reStructuredTextから LaTeX ファイルを生成します。

ヒントメモにグレーの背景色を設定したいので、グレーボックス環境を作成した後、通知環境をカスタマイズしました。

\definecolor{MyGray}{rgb}{0.80,0.80,0.80}

\makeatletter\newenvironment{graybox}{%
   \begin{lrbox}{\@tempboxa}\begin{minipage}{\columnwidth}}{\end{minipage}\end{lrbox}%
   \colorbox{MyGray}{\usebox{\@tempboxa}}
}\makeatother

\makeatletter
\renewenvironment{notice}[2]{
  \begin{graybox}
  \bf\it
  \def\py@noticetype{#1}
  \par\strong{#2}
  \csname py@noticestart@#1\endcsname
}
{
  \csname py@noticeend@\py@noticetype\endcsname
  \end{graybox}
}
\makeatother

環境を通知環境内に配置する場合を除いて、すべて正常に動作します。その場合、次のエラーが発生します。

LaTeX エラー: 外部パー モードではありません

その通知環境に灰色の背景を設定する方法はありますか?

4

3 に答える 3

2

私の質問に答えてくれて、godbykJouniに感謝します。

問題は、 LaTeXで直接コーディングしていないことです。私は再構成されたテキストでドキュメントを書き、Sphinx はLaTeXファイルを出力します。

しかし、私は解決策を見つけました: flowfram パッケージの staticfigure を使用するようにFigure環境を定義します。

\usepackage{flowfram}

\definecolor{MyGray}{rgb}{0.80,0.80,0.80}

\makeatletter\newenvironment{graybox}{%
   \begin{lrbox}{\@tempboxa}\begin{minipage}{\columnwidth}}{\end{minipage}\end{lrbox}%
   \colorbox{MyGray}{\usebox{\@tempboxa}}
}\makeatother

\makeatletter
\renewenvironment{notice}[2]{
  \begin{graybox}
  \bf\it
  \def\py@noticetype{#1}
  \par\strong{#2}
  \csname py@noticestart@#1\endcsname
}
{
  \csname py@noticeend@\py@noticetype\endcsname
  \end{graybox}
}
\makeatother

\renewenvironment{figure}[6]{
  \begin{staticfigure}
}{
  \end{staticfigure}
}

PS: 'figure' を再定義するとき、引数の数を 6 にする必要がありました: そうしないと、pdf ファイルにいくつかの 'htbp' が出力されます (私はLaTeXの専門家ではありません。私が見つけた解決策です)この問題のために)

于 2009-03-04T10:36:19.070 に答える
1

Jouni が正しく指摘したように、図と表 (つまりフロート) は移動でき、灰色のボックスにそれらを含めることはできません。目的の効果を得るには、次の 2 つのオプションがあります。

  1. 通知全体をfigure環境に入れます (通知全体をページ上で、または LaTeX が選択した場合は新しいページに移動できるように)。
  2. float ( figureenvironment) を使用しないで\includegraphicsください。画像を環境に直接ポップするために使用してくださいnotice。ただし、キャプションは Figure または Table 環境内でのみ機能するため、この Figure 以外でキャプションを使用することはできません。この画像に関連付けられたキャプションが必要な場合は、captionパッケージを使用できます。

    \documentclass{article}
    \usepackage{caption}% let's us use captions outside of floats
    \usepackage{lipsum}% provides filler text
    \begin{document}
    \lipsum[1]
    \begin{center}
      \includegraphics{mypic}
      \captionof{figure}{This is my picture.}% makes a caption for non-floats
      \label{fig:mypic}
    \end{center}
    \lipsum[2]        
    \end{document}
    

私は Sphinx を使用したことがないので、これを彼らの出力に統合することについてあまり手助けできないことを残念に思います。

于 2009-03-04T05:58:16.100 に答える