Salve a tutti.
Devo scrivere alcune righe di codice e voglio separarle dal testo con due linee, una sopra e una sotto.
Il pacchetto listing, con la semplice opzione frame=lines, permette di farlo.Però vorrei una linea tratteggiata con delle forbici, come riportato
in Gestione di Figure e Tabelle con LaTeX di Luca Caucci e Mariano Spadaccini.Ho utilizzato tikz per riprodurla, nel seguente modo:
`\tikz \draw[dashed] node at (1cm,0) [fill=white] {\ding{34}} (0,0)–(\textwidth,0);`
Il risultato è accettabile.Per utilizzarla avevo pensato a qualcosa del genere:
`\documentclass{book}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{verbatim}
\usepackage{pifont}\def\linea{%
\tikz \draw[dashed] node at (1cm,0) [fill=white] {\ding{34}}%
(0,0)–(\textwidth,0);%
}\newenvironment{codice}{\noindent\linea\verbatim}{\endverbatim\linea}
\begin{document}
\lipsum[1]\begin{codice}
Hello from \LaTeX{}.
\end{codice}
%\lipsum[1]
\lipsum[1]
\end{document}`
ma il risultato non è dei migliori. Ci sono degli spazi di troppo tra le linee e codice.Pertanto vi chiedo qualche altra soluzione (che sicuramente sarà migliore della mia), magari per listings.
Ho provato a cercare la definizione di frame=lines per modificarla, ma non ci sono riuscito.
È orrendo lo stesso, ma puoi fare così:
`\newenvironment{codice}
{\par\medskip\hbox{\linea}\vskip-3ex\verbatim}
{\endverbatim\vskip-2ex\hbox{\linea}\vskip-1ex\medskip}`
Ma attento: è possibile che LaTeX ti lasci le forbicine su una pagina e il resto del codice sull’altra. Meglio usare fancyvrb:
`\usepackage{fancyvrb}
\makeatletter
\def\FV@Frame@forbici{%
\let\FV@BeginListFrame\start@forbici
\let\FV@LeftListFrame\relax
\let\FV@RightListFrame\relax
\let\FV@EndListFrame\finish@forbici}
\def\start@forbici{\@linea\nobreak}
\def\finish@forbici{\nobreak\kern1.3ex\nobreak\@linea}
\newbox\@lineabox % si compone la linea una volta sola
\sbox\@lineabox{%
\tikz \draw[dashed] node at (1cm,0) [fill=white] {\ding{34}}%
(0,0)–(\textwidth,0);}
\def\@linea{\copy\@lineabox}
\makeatother
…
\begin{document}
…
\begin{Verbatim}[frame=forbici]
Hello from \LaTeX{}.
\end{Verbatim}
…`
Ciao
Enrico