Domanda

Sto usando Sphinx per documentare un progetto. Produce file LaTeX da testo ristrutturato .

Vorrei impostare un colore di sfondo grigio per le punte e le note , quindi ho personalizzato l'ambiente avviso dopo aver creato un ambiente graybox :

\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

Tutto funziona bene tranne se inserisco una figure nell'ambiente avviso . In tal caso, visualizzo questo errore:

  

Errore LaTeX: non in modalità par esterna

C'è un modo per impostare uno sfondo grigio per quell'ambiente avviso ?

È stato utile?

Soluzione 2

Grazie godbyk e Jouni per aver risposto alla mia domanda.

Il problema è che non codifico direttamente in LaTeX . Scrivo la documentazione in testo ristrutturato e Sphinx produce i file LaTeX .

Ma ho trovato una soluzione: ho ridefinito l'ambiente figure per usare staticfigure dal pacchetto flowfram :

\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: ho dovuto mettere 6 al numero di argomenti per ridefinire 'figura': se non lo faccio, produce un po 'di' htbp 'nei file pdf (non sono un LaTeX expert. è solo la soluzione che ho trovato per questo problema)

Altri suggerimenti

Questa è una FAQ . Non ha senso mettere una figura (o qualsiasi altro "float" che può spostarsi altrove nell'output) all'interno di una casella grigia; se vuoi che la tua figura contenga una casella grigia, inserisci l'ambiente della casella grigia all'interno dell'ambiente della figura.

Come sottolineato correttamente da Jouni, figure e tabelle (cioè float) possono essere spostate e la tua casella grigia non può contenerle. Per ottenere l'effetto desiderato, hai due opzioni:

  1. Inserisci l'intero avviso in un ambiente figure (in modo che l'intero avviso possa essere spostato sulla pagina o su una nuova pagina se LaTeX lo sceglie).
  2. Non usare un float (ambiente figure ) - basta usare \ includegraphics per inserire l'immagine direttamente nell'avviso ambiente. Non sarai in grado di usare una didascalia con questa non figura, tuttavia, poiché le didascalie funzionano solo all'interno di un ambiente di figura o tabella. Se desideri una didascalia associata a questa immagine, puoi utilizzare il didascalia pacchetto :

    \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}
    

Non ho usato Sphinx, quindi temo di non poterti aiutare troppo con l'integrazione di questo nel loro output.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top