- Questo topic ha 14 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 4 mesi fa da
Lorenzo.
-
CreatoreTopic
-
19 Aprile 2012 alle 7:36 #72503::
Salve a tutti,Vi chiedo una cosa un po’ particolare. Nella mia tesi devo inserire parti di codice in due linguaggi diversi (C e Fortran). C’è un modo per ottenere un indice dei listati che divida i codici in C da quelli in Fortran? Non so se tipograficamente parlando può essere una buona idea, ma mi piaceva fare così. Piuttosto che dover inserire nel caption del codice di quale linguaggio si tratta, mi faceva comodo avere due indici separati. Sennò mi ingegno in modo diverso.
-
CreatoreTopic
-
AutoreRisposte
-
-
19 Aprile 2012 alle 8:52 #72504::
canemacchina” post=71739Salve a tutti,
Vi chiedo una cosa un po’ particolare. Nella mia tesi devo inserire parti di codice in due linguaggi diversi (C e Fortran). C’è un modo per ottenere un indice dei listati che divida i codici in C da quelli in Fortran? Non so se tipograficamente parlando può essere una buona idea, ma mi piaceva fare così. Piuttosto che dover inserire nel caption del codice di quale linguaggio si tratta, mi faceva comodo avere due indici separati. Sennò mi ingegno in modo diverso.
`\documentclass[a4paper]{report}
\usepackage{listings,etoolbox}
\makeatletter
\patchcmd{\lst@MakeCaption}{{lol}{lstlisting}}{{lol}{\lstlistingtype}}{}{}
\patchcmd{\lst@MakeCaption}{{lol}{lstlisting}}{{lol}{\lstlistingtype}}{}{}\newcommand\lstlistofClistings{%
\begingroup
\let\l@Flstlisting\@gobbletwo
\let\l@Clstlisting\l@lstlisting
\def\lstlistlistingname{Listati C}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}
\newcommand\lstlistofFlistings{%
\begingroup
\let\l@Clstlisting\@gobbletwo
\let\l@Flstlisting\l@lstlisting
\def\lstlistlistingname{Listati Fortran}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}\makeatother
\def\lstlistingtype{lstlisting}
\lstnewenvironment{Flstlisting}[1][]
{\def\lstlistingtype{Flstlisting}\lstset{#1}}
{}
\lstnewenvironment{Clstlisting}[1][]
{\def\lstlistingtype{Clstlisting}\lstset{#1}}
{}\begin{document}
\lstlistofFlistings
\lstlistofClistings\chapter{A}
\begin{Flstlisting}
abc
\end{Flstlisting}\begin{Clstlisting}
def
\end{Clstlisting}\end{document}`
Questo nell’ipotesi che tu non abbia altri “elenchi di listati”.
Ciao
Enrico
-
19 Aprile 2012 alle 10:43 #72505
-
19 Aprile 2012 alle 11:08 #72506::
C’è qualcosa che non mi funziona. Le pagine per i listati separati le crea, ma poi non inserisce l’elenco… O meglio, lo fa solo se inserisco dopo i due\lstlistofFlistings
\lstlistofClistingsun
\lstlistoflistings
ma così ho l’ovvio inconveniente di avere un terzo indice globale.
Grazie ancora!
-
19 Aprile 2012 alle 13:16 #72507
-
19 Aprile 2012 alle 15:00 #72508::
Niente, funziona ma quando lo metto nella tesi (che è fatta con classicthesis e arsclassica) non va. Ma per forza il file degli indici di listings deve essere unico? non posso definire in qualche modo un file .lolc per i codici in C e un file lolf per i codici in fortran? così poi potrei fare\phantomsection
\pdfbookmark{\lstlistlistingname}{lolc}
\lstlistoflistings\phantomsection
\pdfbookmark{\lstlistlistingname}{lolf}
\lstlistoflistingsimmagino… no?
-
19 Aprile 2012 alle 15:46 #72509::
canemacchina” post=71752Niente, funziona ma quando lo metto nella tesi (che è fatta con classicthesis e arsclassica) non va. Ma per forza il file degli indici di listings deve essere unico? non posso definire in qualche modo un file .lolc per i codici in C e un file lolf per i codici in fortran? così poi potrei fare
\phantomsection
\pdfbookmark{\lstlistlistingname}{lolc}
\lstlistoflistings\phantomsection
\pdfbookmark{\lstlistlistingname}{lolf}
\lstlistoflistingsimmagino… no?
Senza un esempio minimo di codice è impossibile aiutarti.
Ciao
Enrico
-
19 Aprile 2012 alle 18:41 #72510::
`\newcommand\lstlistofClistings{%
\cleardoublepage\phantomsection
\pdfbookmark{Listati C}{C}
\begingroup
\let\l@Flstlisting\@gobbletwo
\let\l@Clstlisting\l@lstlisting
\def\lstlistlistingname{Listati C}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}
\newcommand\lstlistofFlistings{%
\cleardoublepage\phantomsection
\pdfbookmark{Listati Fortran}{F}
\begingroup
\let\l@Clstlisting\@gobbletwo
\let\l@Flstlisting\l@lstlisting
\def\lstlistlistingname{Listati Fortran}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}`
Ciao
Enrico
-
20 Aprile 2012 alle 6:26 #72511::
Scusa se scasso, ma io queste cose in latex ancora non le so fare. Dovrei prendere il primo codice che mi hai postato e sostituire i due \newcommand con questi? L’ho fatto, ma nell’indice vedo i due “listati C” e “Listati Fortran”, ma entrambi riportano tutti i codici.Per l’esempio minimo, io uso classicthesis con arsclassica preso dal sito di panatieri, senza aver modificato nulla!
-
20 Aprile 2012 alle 8:25 #72512::
canemacchina” post=71765Scusa se scasso, ma io queste cose in latex ancora non le so fare. Dovrei prendere il primo codice che mi hai postato e sostituire i due \newcommand con questi? L’ho fatto, ma nell’indice vedo i due “listati C” e “Listati Fortran”, ma entrambi riportano tutti i codici.
Per l’esempio minimo, io uso classicthesis con arsclassica preso dal sito di panatieri, senza aver modificato nulla!
`\documentclass[10pt,% % corpo del font principale
a4paper,twoside,openright,% % carta A4, fronte-retro
titlepage,% % frontespzio
fleqn,% % equazioni allineate a sinistra
headinclude,,footinclude,% % testatina e piË di pagina
BCOR5mm,% % rilegatura di 5 mm
numbers=noenddot,% % niente punto dopo il numero delle sezioni
cleardoublepage=empty,% % pagine vuote senza testatina e piË di pagina
tablecaptionabove,% % didascalie in cima alle tabelle
abstracton%
]{scrreprt} % classe report di KOMA-Script;
% durante la stesura della tesi, cambiare “twoside,openright”
% in “oneside,openany” per risparmiare carta\usepackage[T1]{fontenc} % la codifica dei font
\usepackage[latin1]{inputenc} % imposta la codifica di input;
\usepackage[english,italian]{babel} % per scrivere in italiano e in inglese;\usepackage[eulerchapternumbers,% % numeri dei capitoli in Euler
beramono,% % Bera Mono come font a spaziatura fissa
eulermath,% % AMS Euler come font per la matematica
pdfspacing% % migliora il riempimento di riga con PDFLaTeX
]{classicthesis} % lo stile ClassicThesis\usepackage{arsclassica} % modifica alcuni aspetti di ClassicThesis
\usepackage{etoolbox,listings}
\makeatletter
\patchcmd{\lst@MakeCaption}{{lol}{lstlisting}}{{lol}{\lstlistingtype}}{}{}
\patchcmd{\lst@MakeCaption}{{lol}{lstlisting}}{{lol}{\lstlistingtype}}{}{}\newcommand\lstlistofClistings{%
\cleardoublepage\phantomsection
\pdfbookmark{Listati C}{C}
\begingroup
\let\l@Flstlisting\@gobbletwo
\let\l@Clstlisting\l@lstlisting
\def\lstlistlistingname{Listati C}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}
\newcommand\lstlistofFlistings{%
\cleardoublepage\phantomsection
\pdfbookmark{Listati Fortran}{F}
\begingroup
\let\l@Clstlisting\@gobbletwo
\let\l@Flstlisting\l@lstlisting
\def\lstlistlistingname{Listati Fortran}
\@ifundefined{@donefirst}{\@fileswfalse\global\let\@donefirst\@empty}{}
\lstlistoflistings
\endgroup
}
\makeatother
\def\lstlistingtype{lstlisting}
\lstnewenvironment{Flstlisting}[1][]
{\def\lstlistingtype{Flstlisting}\lstset{#1}}
{}
\lstnewenvironment{Clstlisting}[1][]
{\def\lstlistingtype{Clstlisting}\lstset{#1}}
{}\begin{document}
\lstlistofFlistings
\lstlistofClistings\chapter{A}
\begin{Flstlisting}
abc
\end{Flstlisting}\begin{Clstlisting}
def
\end{Clstlisting}\end{document}`
Non intendo andare in cerca chissà dove di preamboli. Ho preso uno che avevo e l’ho ridotto a un minimo accettabile. Se poi è diverso dal tuo non so che farci: sei tu quell che deve esporre il problema, non noi a dover cercare a tentoni.Ciao
Enrico
-
20 Aprile 2012 alle 10:24 #72513::
Ti ringrazio, e scusami.
Il fatto è che di queste cose non so ancora fare nulla. Mi metterò ad imparare, ma devo trovare un po’ di tempo.E comunque con il discorso “Per l’esempio minimo, io uso classicthesis con arsclassica preso dal sito di panatieri, senza aver modificato nulla!” non intendevo dire che dovevi cercare tu, ma semplicemente che evitavo di postare tutto il codice dato che basta scaricare quello per avere il mio esempio.
-
20 Aprile 2012 alle 12:39 #72514::
IO ho copiato il tuo esempio, l’ho compilato ed è venuto esattamente come lo chiedi tu. Due indici di codici distinti ognuno con i suoi codici, quelli C nell’elenco C e quelli fortran nell’elenco F.Che cosa c’è che non va da te?
Per essere precisi io uso TeX Live 2011 aggiornato questa mattina, su macchina Mac con sistema operativo Lion (10.7).
-
20 Aprile 2012 alle 12:50 #72515
-
20 Aprile 2012 alle 13:54 #72516::
canemacchina” post=71785Semplice stupidaggine. Non avevo fatto caso alla differenza tra importare i pacchetti listings e etoolbox in modo separato piuttosto che con
\usepackage{listings, etoolbox}.Semplicemente con quella modifica tutto funziona
Quello è irrilevante. Forse avevi messo il codice in un posto sbagliato.
Ciao
Enrico
-
20 Aprile 2012 alle 14:11 #72517
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.