- Questo topic ha 20 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 16 anni, 7 mesi fa da
yashi.
-
CreatoreTopic
-
2 Dicembre 2008 alle 7:44 #29150::
http://www.lorenzopantieri.net/LaTeX_files/Codici.pdfIn questo articolo viene presentato il pacchetto listings, che permette di inserire codici all’interno di un documento. L’articolo (naturalmente) non intende sostituire la documentazione di listings, ma ne costituisce una sintesi. Spero vi sia utile.
Al solito, le vostre osservazioni sono molto apprezzate…
Buona lettura,
L. -
CreatoreTopic
-
AutoreRisposte
-
-
2 Dicembre 2008 alle 10:45 #29151::
http://www.lorenzopantieri.net/LaTeX_files/Codici.pdf
In questo articolo viene presentato il pacchetto listings, che permette di inserire codici all’interno di un documento. L’articolo (naturalmente) non intende sostituire la documentazione di listings, ma ne costituisce una sintesi. Spero vi sia utile.
Al solito, le vostre osservazioni sono molto apprezzate…
Mi sembra un ottimo lavoro, come sempre. 🙂 Ci sono un paio di cose che non mi vanno.
(1) L’elenco dei codici non va nell’indice; è come mettere l’indice nell’indice. 🙂
(2) Nel documento ci sono pochissime formule matematiche, quattro nella sezione 3.2, tutte sulla stessa riga, e una nella sezione 4.2. Usare Euler per quelle formule quando in tutto il resto adoperi numeri minuscoli mi sembra piuttosto brutto.
(3) Andrebbe menzionato che \lstinline eredita tutte le opzioni date con i comandi \lstset che precedono (allo stesso livello o superiore, per i gruppi). Per esempio, se si desidera che i listati non siano troppo appariscenti e si preferisce dare basicstyle=\small\ttfamily (cosa che consiglierei, fra l’altro, soprattutto se si usa Bera Mono), anche \lstinline produrrà roba \small. 🙁
La “soluzione” per (3) che sto sperimentando è:
`\makeatletter
\lst@Key{addtobasicstyle}\relax{%
\toks@=\expandafter{\lst@basicstyle #1}%
\edef\lst@basicstyle{\the\toks@}}
\makeatother\newcommand{\Verb}{\lstinline[addtobasicstyle=\normalsize,breaklines=false]}`
che permette di evitare di specificare \normalsize ogni volta. Dovrei indagare se si può passare qualche opzione “fissa” a \lstinline, ciò che permetterebbe di non doversi definire un nuovo comando.Ciao
Enrico
-
2 Dicembre 2008 alle 12:02 #29152
-
2 Dicembre 2008 alle 12:26 #29153::
La “soluzione” per (3) che sto sperimentando è:
`\makeatletter
\lst@Key{addtobasicstyle}\relax{%
\toks@=\expandafter{\lst@basicstyle #1}%
\edef\lst@basicstyle{\the\toks@}}
\makeatother`Ho trovato di meglio 🙂 In rosso sono le aggiunte al codice di \lstinline:
`\makeatletter
\lst@Key{addtobasicstyle}\relax{%
\toks@=\expandafter{\lst@basicstyle #1}%
\edef\lst@basicstyle{\the\toks@}}
\def\calc@current@size{%
\edef\current@size{%
\noexpand\fontsize{\f@size}{\f@baselineskip}\noexpand\selectfont}}\renewcommand\lstinline[1][]{%
\leavevmode\bgroup % \hbox\bgroup \bgroup
\calc@current@size
\def\lst@boxpos{b}%
\lsthk@PreSet
\lstset{flexiblecolumns,addtobasicstyle=\current@size,#1}%
\lsthk@TextStyle
\@ifnextchar\bgroup{\afterassignment\lst@InlineG \let\@let@token}%
\lstinline@}
\makeatother`
In questo modo \lstinline userà sempre il corpo corrente, perché la chiamata di \currentsize viene eseguita dopo eventuali \small (o simili) dati come valore di basicstyle. È possibile anche scrivere
`\lstinline[addtobasicstyle=\tiny]!Pippo!`
e ottenere un corpo più piccolo. Certo, viene valutato il corpo da scegliere due o tre volte, ma fra tutte le macro eseguite da \lstinline a ogni chiamata, il rallentamento non si dovrebbe sentire.Non c’è più bisogno di definire un comando diverso, \lstinline userà sempre, a meno che non si specifichi qualcos’altro con basicstyle o addtobasicstyle, il corpo corrente.
Ciao
Enrico
-
2 Dicembre 2008 alle 13:54 #29154::
Innanzitutto, ringrazio Enrico per le sue osservazioni e Tommaso per i ringraziamenti.(3) Andrebbe menzionato che \lstinline eredita tutte le opzioni date con i comandi \lstset che precedono (allo stesso livello o superiore, per i gruppi). Per esempio, se si desidera che i listati non siano troppo appariscenti e si preferisce dare basicstyle=\small\ttfamily (cosa che consiglierei, fra l’altro, soprattutto se si usa Bera Mono), anche \lstinline produrrà roba \small. 🙁
Un punto importante e veramente spinoso, accidenti… 🙄
Non mi ero mai accorto di questo comportamento, perché inserisco tutti i miei codici fuori corpo con un ambiente ad hoc, che contiente tutte le impostazioni. Fra l’altro, mi sembra un modo abbastanza elegante per risolvere la cosa.
Quindi, se non erro, ci sono tre possibiltà:
1. inserire tutti i codici fori corpo con ambienti ad hoc (soluzione elegante, ma non immediata);
2. tutte le volte che si dà \lstinline specificare che il font deve essere normale (soluzione semplice, ma molto rozza);
3. scrivere la patch di Enrico (che però dovrebbe essere contenuta direttamente dentro il codice di listings: come sapete, per il mio lettore ideale miro ad un LaTeX semplice ed elegante, cercando di mantenere l’utente finale al riparo da magie TeXniche, anche se questo non è sempre possibile…).
Se non c’è altro al riguardo, penso a come presentare il tutto.
Grazie mille,
L.
-
2 Dicembre 2008 alle 15:08 #29155::
Innanzitutto, ringrazio Enrico per le sue osservazioni e Tommaso per i ringraziamenti.
(3) Andrebbe menzionato che \lstinline eredita tutte le opzioni date con i comandi \lstset che precedono (allo stesso livello o superiore, per i gruppi). Per esempio, se si desidera che i listati non siano troppo appariscenti e si preferisce dare basicstyle=\small\ttfamily (cosa che consiglierei, fra l’altro, soprattutto se si usa Bera Mono), anche \lstinline produrrà roba \small. 🙁
Un punto importante e veramente spinoso, accidenti… 🙄
Non mi ero mai accorto di questo comportamento, perché inserisco tutti i miei codici fuori corpo con un ambiente ad hoc, che contiente tutte le impostazioni. Fra l’altro, mi sembra un modo abbastanza elegante per risolvere la cosa.
Quindi, se non erro, ci sono tre possibiltà:
1. inserire tutti i codici fuori corpo con ambienti ad hoc (soluzione elegante, ma non immediata);
Pratica sicuramente consigliabile, invece; se si usa un solo linguaggio forse non è necessario, ma, visto il problema di \lstinline potrebbe.
2. tutte le volte che si dà \lstinline specificare che il font deve essere normale (soluzione semplice, ma molto rozza);
Troppo rozza. 🙂 Se sei in un ambiente dove vale \small, che fai?
3. scrivere la patch di Enrico (che però dovrebbe essere contenuta direttamente dentro il codice di listings: come sapete, per il mio lettore ideale miro ad un LaTeX semplice ed elegante, cercando di mantenere l’utente finale al riparo da magie TeXniche, anche se questo non è sempre possibile…).
Penso che chiederò a Brooks che ne pensa.
Ciao
Enrico
-
2 Dicembre 2008 alle 19:52 #29156::
Rieccomi!Ho appena aggiornato il documento, sulla base delle indicazioni fornite da Enrico.
1. Ho eliminato l’elenco dei codici dall’indice.
2. Ho eliminato l’opzione eulermath da classicthesis.
3. Ho rivisto il paragrafo 2:
[…] Scrivendo nel preambolo
`\lstset{basicstyle=\small\ttfamily}`
tutti i codici del proprio documento verranno stampati in caratteri dal corpo piccolo (scelta peraltro sempre consigliabile, nel caso dei codici fuori corpo), usando il font a spaziatura fissa predefinito, a meno che non si specifichi diversamente per codici particolari.Va notato che il comando \lstinline eredita tutte le opzioni impostate con i comandi \lstset che lo precedono (nello stesso gruppo). Per esempio, se nel preambolo del documento si seleziona l’opzione globale basicstyle=\small\ttfamily, anche \lstinline produrrà codici in caratteri dal corpo piccolo. Per far sì che i codici inseriti con \lstinline siano composti usando sempre il corpo corrente (evitando di esplicitare ogni volta basicstyle=\normalsize), è sufficiente introdurre tutti i codici fuori corpo, con le relative impostazioni, mediante gli ambienti personalizzati descritti nel paragrafo 4 nella pagina 12. In alternativa, è possibile ridefinire il comando \lstinline scrivendo nel preambolo le seguenti istruzioni:
`
\makeatletter
\lst@Key{addtobasicstyle}\relax{%
\toks@=\expandafter{\lst@basicstyle #1}%
\edef\lst@basicstyle{\the\toks@}}
\def\calc@current@size{%
\edef\current@size{%
\noexpand\fontsize{\f@size}{\f@baselineskip}%
\noexpand\selectfont}}\renewcommand\lstinline[1][]{%
\leavevmode\bgroup %
\calc@current@size
\def\lst@boxpos{b}\lsthk@PreSet
\lstset{flexiblecolumns,addtobasicstyle=\current@size,#1}%
\lsthk@TextStyle
\@ifnextchar\bgroup{\afterassignment\lst@InlineG
\let\@let@token}\lstinline@}
\makeatother
`Come dicevo, il risultato è indubbiamente efficace, ma mi lascia molto freddo, dal punto di vista didattico. 😕 Troverei decisamente preferibile che l’eccellente patch di Enrico venisse inglobata direttamente nel codice di listings…
A presto,
L.
-
4 Dicembre 2008 alle 11:35 #29157::
Pratica sicuramente consigliabile [quella di introdurre tutti i codici fuori corpo con ambienti ad hoc, contenenti tutte le impostazioni], invece; se si usa un solo linguaggio forse non è necessario, ma, visto il problema di \lstinline potrebbe.
Sono completamente d’accordo, naturalmente.
Penso che chiederò a Brooks che ne pensa [di inserire la patch nel codice di listings].
Spero proprio che l’autore del pacchetto voglia rimediare al difetto di \lstinline: come sai, ritengo che l’utente finale dovrebbe essere tenuto il più possibile lontano dal codice LaTeX “di basso livello”, che va lasciato ai programmatori.
Tienici informati su quest’ultimo punto!
Grazie ancora,
Lorenzo
-
11 Gennaio 2010 alle 13:59 #29158::
scusatemi se dopo più di un anno riprendo questo post, ma ho lo stesso problema di ereditarietà dei settaggi \lstset, che nn riguardano solo la dimensione dello stile, ma anche lo sfondo del codice inline:
`\lstset{
language=[LaTex]Tex,
basicstyle=\small\ttfamily,
breaklines = true,
frame=single,
backgroundcolor=\color{light-gray},
breakautoindent = true
}`
il problema si presenta SOLO quando il testo viene portato a capo automaticamente, e tutta la riga in questione viene “colorata”; qui un esempio
http://www.sendspace.com/file/54ka7nsapreste comerisolvere?
-
11 Gennaio 2010 alle 15:34 #29159::
scusatemi se dopo più di un anno riprendo questo post, ma ho lo stesso problema di ereditarietà dei settaggi \lstset, che nn riguardano solo la dimensione dello stile, ma anche lo sfondo del codice inline:
`\lstset{
language=[LaTex]Tex,
basicstyle=\small\ttfamily,
breaklines = true,
frame=single,
backgroundcolor=\color{light-gray},
breakautoindent = true
}`
il problema si presenta SOLO quando il testo viene portato a capo automaticamente, e tutta la riga in questione viene “colorata”; qui un esempio
http://www.sendspace.com/file/54ka7nsapreste comerisolvere?
A parte che il collegamento non porta da nessuna parte, quello che serve è un esempio minimo compilabile.
Ciao
Enrico
-
11 Gennaio 2010 alle 17:22 #29160::
ho riprovato il link e mi funziona, bisognerebbe scaricare il file lstinline.jpeg che è in fondo alla pagina, sono 3 righe compilate…cmq questo è un pezzo di codice:
`\documentclass[a4paper,10pt]{book}
\usepackage[italian]{babel}
\usepackage[tight,italian]{minitoc}
\usepackage{footmisc}
\usepackage[utf8x]{inputenc}\usepackage{xcolor}
\usepackage{multicol}
\definecolor{light-gray}{gray}{0.96}\usepackage{listings}
\lstset{
language=[LaTex]Tex,
basicstyle=\small\ttfamily,
breaklines = true,
frame=single,
backgroundcolor=\color{light-gray},
breakautoindent = true
}
\begin{document}
Per creare il pacchetto si usa il comando
\lstinline!om-make-ipkg Nome_Progetto!, che rende disponibile l'eseguibile
\lstinline!Nome_Progetto_0.1_armv4t.ipk!; una volta posseduto l'eseguibile, lo
si può installare sulla propria architettura.
\end{document}`ho inoltre combinato una specie di porcheria nel preambolo, poichè per avere il codice inline della stessa dimensione del testo normale, ho copiato tutto ciò che c’è in questo post, e funziona, ma mi piacerebbe fosse + elegante!
in pratica il mio preambolo è diventato:
`\documentclass[a4paper,10pt]{book}\usepackage[italian]{babel}
\usepackage[tight,italian]{minitoc}
\usepackage{footmisc}
\usepackage[utf8x]{inputenc}
\usepackage{hyperref}
\usepackage [bookmarks, colorlinks, citecolor, filecolor, urlcolor]{hyperref}
\hypersetup{colorlinks,citecolor=green,filecolor=magenta,linkcolor=red,
urlcolor=blue}\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{multicol}
\definecolor{light-gray}{gray}{0.96}\usepackage{listings}
\lstset{
language=[LaTex]Tex,
basicstyle=\small\ttfamily,
breaklines = true,
frame=single,
backgroundcolor=\color{light-gray},
breakautoindent = true
}\makeatletter
\lst@Key{addtobasicstyle}\relax{%
\toks@=\expandafter{\lst@basicstyle #1}%
\edef\lst@basicstyle{\the\toks@}}
\def\calc@current@size{%
\edef\current@size{%
\noexpand\fontsize{\f@size}{\f@baselineskip}%
\noexpand\selectfont}}\renewcommand\lstinline[1][]{%
\leavevmode\bgroup %
\calc@current@size
\def\lst@boxpos{b}\lsthk@PreSet
\lstset{flexiblecolumns,addtobasicstyle=\current@size,#1}%
\lsthk@TextStyle
\@ifnextchar\bgroup{\afterassignment\lst@InlineG
\let\@let@token}\lstinline@}
\makeatother\usepackage{lscape}
\usepackage{booktabs}
\usepackage{array,longtable}
\usepackage{tabularx}
\usepackage{rotating}
\newcommand{\mail}[1]{\href{mailto:#1}{\texttt{#1}}}\setlength{\textwidth}{12.4cm}
\setlength{\textheight}{18.0cm}
\setlength{\oddsidemargin}{4.60cm}
\setlength {\evensidemargin}{0.5cm}
\setlength {\topmargin}{-1cm}`
-
11 Gennaio 2010 alle 17:35 #29161
-
11 Gennaio 2010 alle 18:51 #29162::
ho riprovato il link e mi funziona, bisognerebbe scaricare il file lstinline.jpeg che è in fondo alla pagina, sono 3 righe compilate…
Non riesco a vedere alcuno sfondo grigio, tanto meno irregolare come lamenti.
Ciao
Enricoehm… se guardi attentamente la seconda riga, si nota la differenza!
cosa ho detto che è irregolare?
qui ho aumetato la quanità di grigio….
http://www.sendspace.com/file/axl34w
-
11 Gennaio 2010 alle 20:20 #29163::
[quote]ho riprovato il link e mi funziona, bisognerebbe scaricare il file lstinline.jpeg che è in fondo alla pagina, sono 3 righe compilate…
Non riesco a vedere alcuno sfondo grigio, tanto meno irregolare come lamenti.
Ciao
Enricoehm… se guardi attentamente la seconda riga, si nota la differenza!
cosa ho detto che è irregolare?
qui ho aumetato la quanità di grigio….
http://www.sendspace.com/file/axl34w%5B/quote%5D
Con il preambolo che hai indicato (e che fra l’altro dà un errore con hyperref) e il testo del messaggio precedente non ottengo alcuno sfondo grigio, nemmeno modificandolo in modo che uno dei \lstinline vada a capo.Ciao
Enrico
-
12 Gennaio 2010 alle 10:21 #29164
-
12 Gennaio 2010 alle 10:29 #29165::
può essere allora un problema del mio compilatore???
uso kyle…Kile non è il compilatore, ma solo un “front-end”. Per favore, cerca di produrre un vero esempio minimo. Può essere che dipenda da versioni obsolete della distribuzione, ma senza un esempio vero non possiamo esserne certi.
Se dal terminale dai “pdftex -version” che cosa esce?
Ciao
Enrico
-
12 Gennaio 2010 alle 11:33 #29166::
può essere allora un problema del mio compilatore???
uso kyle…kile pardon!
`yashi@muletto:~$ pdftex -version
pdfTeX 3.1415926-1.40.9-2.2 (Web2C 7.5.7)
kpathsea version 3.5.7
Copyright 2008 Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
Kpathsea is copyright 2008 Karl Berry and Olaf Weber.
There is NO warranty. Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
Kpathsea written by Karl Berry, Olaf Weber, and others.Compiled with libpng 1.2.29; using libpng 1.2.29
Compiled with zlib 1.2.3; using zlib 1.2.3
Compiled with xpdf version 3.02pl2
`
come esempio potrei allegare un pdf… ma sempre tramite sendspace, o se mi suggerisci qualche alternativa!cmq non ti ho ancora ringraziato per il tempo che mi stai dedicando….GRAZIE!
allora dal link puoi scaricare un file zippato contenente sia il sorgente che il risultato della mia compilazione.
ho aumentato il grado di grigio, ed ho messo anche del codice fuori testo.
http://www.sendspace.com/file/i4onek
-
12 Gennaio 2010 alle 14:58 #29167::
allora dal link puoi scaricare un file zippato contenente sia il sorgente che il risultato della mia compilazione.
ho aumentato il grado di grigio, ed ho messo anche del codice fuori testo.
http://www.sendspace.com/file/i4onekHo scaricato il .tex dal link e l’ho compilato: tutto bene, qui, nessuna riga colorata in corrispondenza del codice in linea.
In altre parole, il mio PDF viene bene, contrariamente al tuo PDF, che presenta effettivamente un problema.
Che distribuzione usi?
CIao,
L.
-
12 Gennaio 2010 alle 15:42 #29168
-
12 Gennaio 2010 alle 18:35 #29169
-
29 Gennaio 2010 alle 12:50 #29170::
può essere allora un problema del mio compilatore???
uso kile…ebbene si, dopo svariati tentativi mi sono decisa ad aggiornare, ed il problema era proprio la versione di kile scaricata dai repo ufficiali di ubuntu.
ho scaricato il pacchetto debian con un’altra versione e finalmente io lmio codice in linea (ameno quello!!!) non dà più problemi di sfondi errati.ho riportato tutto solo ppc, così se qualcuno dovesse riscontrare lo stesso problema saprebbe come risolverlo
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.