Re: L’Arte di scrivere con LaTeX — nuova edizione

#47630
Up
0
Down
::

lorenzo.pantieri” post=66929Dunque ragazzi, apro un concorso a premi. Il problema è ridefinire i comandi standard in modo da riprodurre gli esempi dell’Arte del capitolo Bibliografia.

Un esempio:
`\documentclass{scrreprt}
\usepackage[writefile]{listings}
\usepackage{biblatex}
\usepackage[listings]{classicthesis}
\usepackage{guit}

\lstset{extendedchars}
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{columns=fullflexible,%
linewidth=0.45\linewidth,keepspaces=true,%
breaklines=false,%
breakindent=0pt,%
boxpos=t,%
basicstyle=\small\ttfamily
}%
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\begin{center}%
\begin{minipage}{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\qquad
\begin{minipage}{0.45\linewidth}%
\setkeys{lst}{frame=none}%
\leavevmode \catcode`\^^M=5\relax
\small\input{\jobname.tmp}%
\end{minipage}%
\end{center}%
}
\makeatother

\begin{document}

\renewcommand{\cite}[1]{[{\color{webgreen}1}]}
\begin{sidebyside}
Si veda~\cite{eco:tesi} per
maggiori dettagli.
\end{sidebyside}

\renewcommand{\cite}[2][]{[{\color{webgreen}1},~#1]}
\begin{sidebyside}
Si veda~\cite[p.~7]{eco:tesi}
per maggiori dettagli.
\end{sidebyside}

\renewcommand{\cite}[2][]{[{\color{webgreen}1},~#1]}
\begin{sidebyside}
Si veda~\cite[p.~7]{eco:tesi}
per maggiori dettagli.
\end{sidebyside}

\renewcommand{\parencite}[1]{(Eco, {\color{webgreen}1977}; Mori {\color{webgreen}2007a,b})}
\begin{sidebyside}
\parencite{mori:poesie,
eco:tesi,mori:tesi}
\end{sidebyside}

\renewcommand{\parencite}[1]{[{\color{webgreen}1}–{\color{webgreen}3}]}
\begin{sidebyside}
\parencite{mori:poesie,
eco:tesi,mori:tesi}
\end{sidebyside}

\end{document}

%\renewenvironment{thebibliography} ???
\begin{sidebyside}
\begin{thebibliography}{9}
\bibitem{eco:tesi}
Eco, Umberto (1977),
\emph{Come si fa una tesi di
laurea}, Bompiani, Milano.
\bibitem{mori:tesi}
Mori, Lapo Filippo (2007),
“Scrivere la tesi di laurea
con \LaTeXe”, \Ars~(3).
\end{thebibliography}
\end{sidebyside}

%\renewcommand{\cite} ???
\begin{sidebyside}
\cite{eco:tesi} \\
\cite[5]{eco:tesi} \\
\cite[5-9]{eco:tesi} \\
\cite[vedi][]{eco:tesi} \\
\cite[vedi][5]{eco:tesi}
\end{sidebyside}

%\renewcommand{\cite} ???
\begin{sidebyside}
\cite{eco:tesi} \\
\cite[5]{eco:tesi} \\
\cite[5-9]{eco:tesi} \\
\cite[vedi][]{eco:tesi} \\
\cite[vedi][5]{eco:tesi}
\end{sidebyside}`
Ricchi premi a chi riuscirà a ridefinire thebibliography e \cite in modo da riprodurre il codice alle pagine 107 e 117 dell’Arte.

`\documentclass{scrreprt}
\usepackage[writefile]{listings}
\usepackage{enumitem}
\usepackage{biblatex}
\usepackage[listings]{classicthesis}
\usepackage{guit}
\usepackage{xparse}

\NewDocumentCommand{\fakecite}{oom}
{\IfNoValueTF{#2}{\fakecitei{#1}}{\fakeciteii{#1}{#2}}}
\NewDocumentCommand{\fakecitei}{>{\SplitArgument{1}{-}}m}
{\IfNoValueTF{#1}{[{\color{webgreen}1}]}{[{\color{webgreen}1}\fakenumbers#1]}}
\NewDocumentCommand{\fakeciteii}{m>{\SplitArgument{1}{-}}m}
{[#1\space{\color{webgreen}1}\fakenumbers#2]}
\NewDocumentCommand{\fakenumbers}{mm}
{\IfNoValueTF{#2}
{\if\relax\detokenize{#1}\relax\else, p. #1\fi}
{, pp. #1–#2}}

\lstset{extendedchars}
\makeatletter
\lstnewenvironment{sidebyside}{%
\global\let\lst@intname\@empty
\setbox\z@=\hbox\bgroup
\setkeys{lst}{columns=fullflexible,%
linewidth=0.45\linewidth,keepspaces=true,%
breaklines=false,%
breakindent=0pt,%
boxpos=t,%
basicstyle=\small\ttfamily
}%
\lst@BeginAlsoWriteFile{\jobname.tmp}%
}{%
\lst@EndWriteFile\egroup
\begin{center}%
\begin{minipage}{0.45\linewidth}%
\hbox to\linewidth{\box\z@\hss}
\end{minipage}%
\qquad
\begin{minipage}{0.45\linewidth}%
\setkeys{lst}{frame=none}%
\leavevmode \catcode`\^^M=5\relax
\small\input{\jobname.tmp}%
\end{minipage}%
\end{center}%
}
\makeatother

\begin{document}

\begingroup
\renewcommand{\cite}[1]{[{\color{webgreen}1}]}
\begin{sidebyside}
Si veda~\cite{eco:tesi} per
maggiori dettagli.
\end{sidebyside}

\renewcommand{\cite}[2][]{[{\color{webgreen}1},~#1]}
\begin{sidebyside}
Si veda~\cite[p.~7]{eco:tesi}
per maggiori dettagli.
\end{sidebyside}

\renewcommand{\cite}[2][]{[{\color{webgreen}1},~#1]}
\begin{sidebyside}
Si veda~\cite[p.~7]{eco:tesi}
per maggiori dettagli.
\end{sidebyside}

\renewcommand{\parencite}[1]{(Eco, {\color{webgreen}1977}; Mori {\color{webgreen}2007a,b})}
\begin{sidebyside}
\parencite{mori:poesie,
eco:tesi,mori:tesi}
\end{sidebyside}

\renewcommand{\parencite}[1]{[{\color{webgreen}1}–{\color{webgreen}3}]}
\begin{sidebyside}
\parencite{mori:poesie,
eco:tesi,mori:tesi}
\end{sidebyside}
\endgroup

\begingroup
\renewenvironment{thebibliography}[1]
{{\Large\spacedallcaps{Bibliografia}}\vspace{3ex}
\begin{enumerate}[label={[\arabic*]},leftmargin=*,align=left]}
{\end{enumerate}}
\renewcommand{\bibitem}[1]{\item}
\begin{sidebyside}
\begin{thebibliography}{9}
\bibitem{eco:tesi}
Eco, Umberto (1977),
\emph{Come si fa una tesi di
laurea}, Bompiani, Milano.
\bibitem{mori:tesi}
Mori, Lapo Filippo (2007),
“Scrivere la tesi di laurea
con \LaTeXe”, \Ars~(3).
\end{thebibliography}
\end{sidebyside}
\endgroup

\begingroup
\let\cite\fakecite
\begin{sidebyside}
\cite{eco:tesi} \\
\cite[5]{eco:tesi} \\
\cite[5-9]{eco:tesi} \\
\cite[vedi][]{eco:tesi} \\
\cite[vedi][5]{eco:tesi}
\end{sidebyside}
\endgroup

\end{document}`
Ho vinto qualche cosa? 🙂

Ciao
Enrico

Go to top