Frage

Ich verwende derzeit Sphinx LaTeX-Ausgabe zu erzeugen, die in ein PDF für Buchart Ausgang eingeschaltet wird pdftex mit .

Zur Zeit habe ich bemerkt, Warnungen und andere „Ermahnungen“ in einem begrenzten Feld zeigte nach oben, in einem Stil, der ein wenig wie folgt aussieht:

-----------------------------------
| Warning:     lorem ipsum foozle |
|  fuzzle fuzz buzz               |
|----------------------------------

Die LaTeX, dass eine solche Box sieht wie folgt erzeugt:

\begin{notice}{warning}{Warning:}
The \code{repoze.bfg} documentation is offered under the
Creative Commons Attribution-Nonconmmercial-Share Alike 3.0 United
States License.
\end{notice}

Es gibt eine Reihe von Befehlen in einer LaTeX .sty-Datei, die die Box zur Verfügung stellen Verhalten:

% Notices / Admonitions
%
\newlength{\py@noticelength}

\newcommand{\py@heavybox}{
\setlength{\fboxrule}{1pt}
\setlength{\fboxsep}{7pt}
\setlength{\py@noticelength}{\linewidth}
\addtolength{\py@noticelength}{-2\fboxsep}
\addtolength{\py@noticelength}{-2\fboxrule}
\setlength{\shadowsize}{3pt}
\Sbox
\minipage{\py@noticelength}
}
\newcommand{\py@endheavybox}{
\endminipage
\endSbox
\fbox{\TheSbox}
}

% Some are quite plain:
\newcommand{\py@noticestart@note}{}
\newcommand{\py@noticeend@note}{}
\newcommand{\py@noticestart@hint}{}
\newcommand{\py@noticeend@hint}{}
\newcommand{\py@noticestart@important}{}
\newcommand{\py@noticeend@important}{}
\newcommand{\py@noticestart@tip}{}
\newcommand{\py@noticeend@tip}{}

% Others gets more visible distinction:
\newcommand{\py@noticestart@warning}{\py@heavybox}
\newcommand{\py@noticeend@warning}{\py@endheavybox}
\newcommand{\py@noticestart@caution}{\py@heavybox}
\newcommand{\py@noticeend@caution}{\py@endheavybox}
\newcommand{\py@noticestart@attention}{\py@heavybox}
\newcommand{\py@noticeend@attention}{\py@endheavybox}
\newcommand{\py@noticestart@danger}{\py@heavybox}
\newcommand{\py@noticeend@danger}{\py@endheavybox}
\newcommand{\py@noticestart@error}{\py@heavybox}
\newcommand{\py@noticeend@error}{\py@endheavybox}

\newenvironment{notice}[2]{
  \def\py@noticetype{#1}
  \csname py@noticestart@#1\endcsname
  \par\strong{#2}
}{\csname py@noticeend@\py@noticetype\endcsname}

Statt nur um die Ankündigung eine Box und ein Wort die Art der Mitteilung in der Box vertreten hat, würde Ich mag die Box um die admonitition, behalten aber das Wort „Warnung“ in der Box mit einem Bild ersetzen , etwa so:

-------------------------------------------
|    ---                                  |
|   /   \                                 |
|   \   /                                 |
|    ---    Fuzzle foo buz lorem ipsum    |
-------------------------------------------

Ich kann nicht ändern, die beginnen \ {Hinweis} ... \ end {Hinweis} Latex Literale von Sphinx gemacht (na ja, ich kann, aber es ist eine echte Nervensäge). Ich würde es vorziehen, nur um die Logik in einem neuen \ newenvironment {Hinweis} Makro zu setzen. Kann mir jemand eine Strategie empfehlen? Alles, was ich bisher ausprobiert habe, hat in Tränen endet.

War es hilfreich?

Lösung

Versuchen Sie, die folgenden (die die ifthen oder xifthen Paket für den \ifthenelse Befehl erfordert):

% Keep a copy of the original notice environment
\let\origbeginnotice\notice
\let\origendnotice\endnotice

% Redefine the notice environment so we can add our own code to it
\renewenvironment{notice}[2]{%
  \origbeginnotice{#1}{#2}% equivalent to original \begin{notice}{#1}{#2}
  % load graphics
  \ifthenelse{\equal{#1}{warning}}{\includegraphics{warning}}{}
  \ifthenelse{\equal{#1}{notice}}{\includegraphics{notice}}{}
  % etc.
}{%
  \origendnotice% equivalent to original \end{notice}
}

Sie werden einen Weg finden, diesen Code in die Präambel des Dokuments zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top