Stefano David
2012-10-29 15:11:49 UTC
Ciao,
dopo qualche tempo ritorno ad usare \LaTeX, come via "intermedia" tra
python-sphinx e pdf. Per questo ho modificato il writer latex di sphinx
in accordo con le richieste della ditta. Al momento ho però un problema
con due ambienti sovrapposti/innestati, topic e Verbatim.
L'ambiente topic, definito da me, è praticamente un 'framed box' con una
riga verticale verde sulla sinistra, mentre il secondo ha solo uno
sfondo grigio.
Il mio problema è che quando un Verbatim appare all'interno di un topic,
appare non il suo sfondo grigio, ma una seconda riga verticale verde,
affiancata ed interna alla prima. Io vorrei far sì che lo sfondo grigio
del Verbatim si veda lo stesso e che la seconda linea verde non appaia.
Ho provato anche una soluzione basata su tikz, ma il risultato è
esattamente lo stesso: credo quindi di affrontare il problema dal punto
di vista sbagliato.
Trovate un esempio minimo in fondo. Spero che Enrico non sussulti sulla
sedia... :-)
Qualcuno ha un suggerimento?
Grazie in anticipo!
Stefano
\documentclass{article}
\usepackage{framed,fancyvrb,color,hyperref}
%verde di titoli ecc
\definecolor{TitleColor}{RGB}{118,177,0}
% sfondo Verbatim, grigio 50%.
\definecolor{VerbatimColor}{RGB}{204,204,204}
%%%%% topic
\newenvironment{topic}{%
\def\FrameCommand{%
\hspace{1pt}%
{\color{TitleColor}\vrule width 2pt}%
\setlength{\fboxrule}{0pt}%
\fbox%
}%
\MakeFramed{\advance\hsize-\width\FrameRestore}%
\noindent\hspace{-4.55pt}% disable indenting first paragraph
}
{%
\vspace{2pt}\endMakeFramed%
}
%%%%%
\let\OriginalVerbatim=\Verbatim
\let\endOriginalVerbatim=\endVerbatim
\newlength\distancetoright
\def\mycolorbox#1{%
\setlength\distancetoright{\linewidth}%
\setlength\fboxrule{0pt}
% \advance\distancetoright -\@totalleftmargin %
\fcolorbox{VerbatimColor}{VerbatimColor}{%
\begin{minipage}{\distancetoright}%
#1
\end{minipage}%
}%
}
\def\FrameCommand{\mycolorbox}
%%%%% Verbatim
\renewcommand{\Verbatim}[1][1]{%
% list starts new par, but we don't want it to be set apart vertically
\bgroup\parskip=0pt%
\smallskip%
% The list environement is needed to control perfectly the vertical
% space.
\list{}{%
\setlength\parskip{0pt}%
\setlength\itemsep{0ex}%
\setlength\topsep{0ex}%
\setlength\partopsep{0pt}%
\setlength\leftmargin{0pt}%
}%
\item\MakeFramed {\FrameRestore}%
\small%
\OriginalVerbatim[#1]%
}
\renewcommand{\endVerbatim}{%
\endOriginalVerbatim%
\endMakeFramed%
\endlist%
% close group to restore \parskip
\egroup%
}
\begin{document}
\begin{topic}
\textbf{Sample}
foo
\begin{Verbatim}[commandchars=\\\{\}]
bar
bar
\end{Verbatim}
foo
\end{topic}
\begin{Verbatim}[commandchars=\\\{\}]
fubar
\end{Verbatim}
\end{document}
PS: si, lo so che è buona norma fornire un esempio minimale, ma non
riesco ad isolare i "pezzi" di codice giusto... ci lavorero' (se trovo
il tempo) domani.
dopo qualche tempo ritorno ad usare \LaTeX, come via "intermedia" tra
python-sphinx e pdf. Per questo ho modificato il writer latex di sphinx
in accordo con le richieste della ditta. Al momento ho però un problema
con due ambienti sovrapposti/innestati, topic e Verbatim.
L'ambiente topic, definito da me, è praticamente un 'framed box' con una
riga verticale verde sulla sinistra, mentre il secondo ha solo uno
sfondo grigio.
Il mio problema è che quando un Verbatim appare all'interno di un topic,
appare non il suo sfondo grigio, ma una seconda riga verticale verde,
affiancata ed interna alla prima. Io vorrei far sì che lo sfondo grigio
del Verbatim si veda lo stesso e che la seconda linea verde non appaia.
Ho provato anche una soluzione basata su tikz, ma il risultato è
esattamente lo stesso: credo quindi di affrontare il problema dal punto
di vista sbagliato.
Trovate un esempio minimo in fondo. Spero che Enrico non sussulti sulla
sedia... :-)
Qualcuno ha un suggerimento?
Grazie in anticipo!
Stefano
\documentclass{article}
\usepackage{framed,fancyvrb,color,hyperref}
%verde di titoli ecc
\definecolor{TitleColor}{RGB}{118,177,0}
% sfondo Verbatim, grigio 50%.
\definecolor{VerbatimColor}{RGB}{204,204,204}
%%%%% topic
\newenvironment{topic}{%
\def\FrameCommand{%
\hspace{1pt}%
{\color{TitleColor}\vrule width 2pt}%
\setlength{\fboxrule}{0pt}%
\fbox%
}%
\MakeFramed{\advance\hsize-\width\FrameRestore}%
\noindent\hspace{-4.55pt}% disable indenting first paragraph
}
{%
\vspace{2pt}\endMakeFramed%
}
%%%%%
\let\OriginalVerbatim=\Verbatim
\let\endOriginalVerbatim=\endVerbatim
\newlength\distancetoright
\def\mycolorbox#1{%
\setlength\distancetoright{\linewidth}%
\setlength\fboxrule{0pt}
% \advance\distancetoright -\@totalleftmargin %
\fcolorbox{VerbatimColor}{VerbatimColor}{%
\begin{minipage}{\distancetoright}%
#1
\end{minipage}%
}%
}
\def\FrameCommand{\mycolorbox}
%%%%% Verbatim
\renewcommand{\Verbatim}[1][1]{%
% list starts new par, but we don't want it to be set apart vertically
\bgroup\parskip=0pt%
\smallskip%
% The list environement is needed to control perfectly the vertical
% space.
\list{}{%
\setlength\parskip{0pt}%
\setlength\itemsep{0ex}%
\setlength\topsep{0ex}%
\setlength\partopsep{0pt}%
\setlength\leftmargin{0pt}%
}%
\item\MakeFramed {\FrameRestore}%
\small%
\OriginalVerbatim[#1]%
}
\renewcommand{\endVerbatim}{%
\endOriginalVerbatim%
\endMakeFramed%
\endlist%
% close group to restore \parskip
\egroup%
}
\begin{document}
\begin{topic}
\textbf{Sample}
foo
\begin{Verbatim}[commandchars=\\\{\}]
bar
bar
\end{Verbatim}
foo
\end{topic}
\begin{Verbatim}[commandchars=\\\{\}]
fubar
\end{Verbatim}
\end{document}
PS: si, lo so che è buona norma fornire un esempio minimale, ma non
riesco ad isolare i "pezzi" di codice giusto... ci lavorero' (se trovo
il tempo) domani.