Risposte nei forum create
-
AutoreRisposte
-
::
Non so se ho capito bene come è tua intenzione scrivere il codice del libro in questione, spero quantomeno di essermi avvicinato.
Ho fatto la supposizione che tutte le etichette abbiano la struttura CBnnn, se così non fosse fammi sapere…
Ho supposto che nel caso di gruppi di etichette (CB 4-7) ci si premuri manualmente che tutti i testi (4,5,6,7) siano citati. Altrimenti occorre pensare qualche riga di codice in più.le spiegazioni sono nel codice (che se qualcuno volesse correggere sarei felice 🙂 ).
Francesco`
\documentclass[12pt]{book}
\usepackage{etoolbox,xparse,l3sort}
\title{Test}% definisco un comando da usare all'interno del testo, magari appena dopo \chapter. Questo assegna a un'etichetta di facile memorizzazione (reArtu)
l'etichetta che si vorrà usare nelle note (CB1, scritto senza spazi).
\newcommand{\chapterlabel}[2]{%
\csdef{#1}{#2}}% usp il linguaggio di programmazinoe LaTeX3, o almeno ci provo, mi scuso se non hai dimestichezza conquesto tipo di codice, ma non saprei fare altrimenti.
\ExplSyntaxOn
\tl_new:N \g_guido_numbers_tl %token list per memorizzare la serie di numeri delle etichette
\fp_new:N \g_guido_numbers_max_value_fp % valore massimo delle etichette
\fp_new:N \g_guido_numbers_min_value_fp % valore minimo delle etichette
\clist_gclear_new:N \g_guido_labels_clist %clist in cui immagazzino le etichette compreso il CB
\clist_gclear_new:N \g_guido_labels_numbers_clist % clist in cui immagazzino solo i numeri delle etichette
\int_new:N \l_guido_list_population_int % intero che mi dice quanti elementi contiene una lista.%Alla fine del documento uso il comando \PrintNoteLabels per stampare la scritta “CB nn'' o “CB xx-yy''. Vule come argomento una lista separata da virgole
%dei nomi assegnati ai libri (il reArtu di prima).
\NewDocumentCommand{\PrintNoteLabel}{m}{\guido_print_labels_cs:n {#1}}
%Il comando di cui sopra richiama un altro comando:
\cs_new_protected:Npn \guido_print_labels_cs:n #1
{
\clist_gclear:N \g_guido_labels_clist % pulisco \g_guido_labels_clist
\clist_gclear:N \g_guido_labels_numbers_clist %pulisco \g_guido_labels_numbers_clist
\clist_gset:Nn \g_guido_labels_clist {#1} %assegno a \g_guido_labels_clist l'argomento di \PrintNoteLabel
\clist_map_inline:Nn \g_guido_labels_clist {\guido_read_labels:n {##1}} % mappo la lista (eseguo un'operazione su ogni elemento della lista) eseguendo il comando
%\guido_read_labels:n. Questo crea una lista contenente solo numeri, cioè se prima avevo CB1,CB2 ora ho 1,2.
% Conto poi quanti elementi contiene la lista di soli numeri.
\int_set:Nn \l_guido_list_population_int {\clist_count:N \g_guido_labels_numbers_clist}
% se ho un solo elemento le cose sono semplici, e stampo l'etichetta
\int_compare:nNnTF {\l_guido_list_population_int}={1}
{CB~ \clist_use:Nnnn \g_guido_labels_numbers_clist {}{}{} . }
% se ci sono più elementi devo fare un po' di operazioni.
{
%valuto il valore massimo e il valore minimo
\tl_clear:N \g_guido_numbers_tl
\clist_map_inline:Nn \g_guido_labels_numbers_clist
{ \tl_gput_right:Nn \g_guido_numbers_tl {,##1} }
\tl_gremove_once:Nn \g_guido_numbers_tl {,}
\fp_set:Nn \g_guido_numbers_max_value_fp {\fp_eval:n { max(\tl_use:N \g_guido_numbers_tl) }}
\fp_set:Nn \g_guido_numbers_min_value_fp {\fp_eval:n { min(\tl_use:N \g_guido_numbers_tl) }}
% e li uso per stampare l'etichetta nel formato CB xx-yy
CB~ \fp_use:N \g_guido_numbers_min_value_fp — \fp_use:N \g_guido_numbers_max_value_fp .
%voelndo potresti stampare tutti i valori tipo CB 4, 5, 6 e 7
%\clist_use:Nnnn \g_guido_labels_numbers_clist { ~e~ } { ,~ } { ,~e~ } .
}
}
%NB. Se le note si riferissero a un insieme di libri tipo CB 1-4, 8, 10-13 occorrerebbe modificare il codice! Fammi sapere% la funzione richiamata prima, serve per togliere il CB dalle etichette e lasciare solo i numeri.
\cs_new_protected:Npn \guido_read_labels:n #1
{
\tl_set:Nx \l_tempa_tl {\use:c {#1}}
\tl_remove_once:Nn \l_tempa_tl {CB}\clist_gput_right:NV \g_guido_labels_numbers_clist \l_tempa_tl
}
\ExplSyntaxOff\begin{document}
\maketitle
\chapter{}
\chapterlabel{tavolarotonda}{CB2}
\chapterlabel{reArtu}{CB52}
\chapterlabel{remo}{CB3}
\chapterlabel{tavolarotonde}{CB4}
\chapterlabel{reArte}{CB8}
\chapterlabel{reme}{CB6}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus fermentum. Phasellus vel egestas velit, et sollicitudin leo.
Morbi et hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam commodo tristique. Donec sit amet vulputate justo. Maecenas nulla enim, fermentum vitae dapibus at, rutrum vitae libero.
Proin faucibus nulla eros, ac tincidunt diam rutrum vel. Aenean eu erat at justo malesuada consequat sed vel erat. Vivamus gravida est quis sem semper, sed venenatis sem euismod.
Etiam quis orci quam. Ut a massa lacus.\chapter{}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur nisi sit amet vulputate lacinia. Cras fermentum faucibus fermentum. Phasellus vel egestas velit, et sollicitudin leo.
Morbi et hendrerit velit, sed volutpat purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis at pharetra velit. Sed aliquam commodo tristique. Donec sit amet vulputate justo.
Maecenas nulla enim, fermentum vitae dapibus at, rutrum vitae libero. Proin faucibus nulla eros, ac tincidunt diam rutrum vel. Aenean eu erat at justo malesuada consequat sed vel erat.
Vivamus gravida est quis sem semper, sed venenatis sem euismod. Etiam quis orci quam. Ut a massa lacus.
\newpage%\PrintNoteLabel{\tavolarotonda,\reartu}
\PrintNoteLabel{tavolarotonda,reArtu,remo} Layamon – Historia Regum Britanniae […]\PrintNoteLabel{reme,reArte} Following is the text of an interview with Mr. Akira Inoue, Co-ordinator of Geoffrey of Monmouth Association.
\PrintNoteLabel{tavolarotonde} According to the Historia Brittonum, and the writings of Gildas.
\end{document}`
::
Il fatto di non avere alcun rimando all’interno del testo mi spiazza un po’, ma sono scelte… Ma il testo delle note non viene scritto all’interno dei capitoli, ma direttamente in fondo al libro?
Oggi non riesco a provare, ma nei prossimi giorni guardo se mi viene in mente qualcosa.Per la questione del riferimento a gruppi di capitoli (CB4-7) esiste una qualche logica? se dici che le etichette non sono necessariamente consequenziali, come dovrebbero essere strutturati?
Francesco
::
Ciao Guido,
io non ho capito qual è il risultato che vuoi ottenere. I rimandi alla nota, quelli all’interno del testo, oltre a contenere il mark a scelta, devono avere anche un numero progressivo? Servono anche i collegamenti ipertestuali?
Potresti per favore mostrare un esempio di come deve risultare il testo finito, cioè non il codice LaTeX, ma quello che vorresti vedere sul libro?Fran
::
Col pacchetto titletoc risolvi tutto. Adattalo allo stile della classe…
Fran
`\documentclass[a4paper,10pt,peerreviewca,compsoc,twoside,onecolumn]{IEEEtran}
\setcounter{tocdepth}{3}
\usepackage{titletoc}
\titlecontents{subsubsection}
[6em]
{}
{\thecontentslabel\hspace*{1em}}
{}
{}
\begin{document}
\tableofcontents
\section{uno}
\subsection{due}
\subsubsection{tre}
\end{document}`
::
Ciao e benvenuta nel forum.
Ci faresti vedere per favore il codice che usi per la tabella? Meglio ancora sarebbe un esempio compilabile che riproduce l’errore (cioè un codice cha vada \documentclass.. a \end{document}) ma credo basti il codice che scrivi tra \begin{tabular} e end{tabular}Fran
::
[tt]\skip\footins[/tt] è la dimensione che regola la distanza fra l’ultima riga del testo della pagina e la prima riga delle note a piede. In questo caso Teodoro voleva che questa distanza aumentasse di 6 mm, senza però modificare la distanza fra l’ultima riga di testo e la linea. Usando solo `\addtolength{\skip\footins}{6mm}` ti accorgi che tutto il blocco delle note a piede (compresa la linea) viene spostato verso il basso.
Pertanto è necessario giocare con gli spazi prima e dopo la linea, ricordandosi che la somma totale degli spazi verticali usati nel comando [tt]\footnoterule[/tt], compreso lo spessore della linea, deve dare zero.
Quindi prima si aggiunge uno spazio verticale negativo di 6 mm per riportare la linea là dove era prima, poi si stampa la linea (spessa 0,4 pt di default) e poi si dà una spaziatura verticale che bilanci i 6 mm +0,4 pt
::scroll86″ post=93737
ah poi io ho usato \setlength{\parskip}{0pt} nel preambolo, c’è la possibilità di dirgli di fare questa magia “localmente”?Certo, basta che usi quel codice dentro a un gruppo e la modifica avrà effetto solo in quel gruppo. (Ma sii cauto ché è facile fare degli orrori dimenticandosi di definizioni date chissà dove. Come già scrivevi tu, lascia queste cose alla fine!)
Fran
::
Ciao,
il comportamento di LaTeX è quello di riempire la pagina nel modo più omogeneo possibile, quindi nel caso in cui fosse necessario lui proverà a aumentare l’interlinea (per quanto concesso) o a restringerla.
Alla fine di ogni capoverso viene aggiunto uno spazio verticale pari a [tt]\parskip[/tt], che se guardi nel file latex.ltx vedrai essere definito come `\parskip=0pt plus 1pt` quindi è una lunghezza elastica che va da 0pt a 1pt. Per questo motivo terminando le righe con \\ ottieni l’interlinea giusta, perché \parskip non viene aggiunto.
Se tu volessi eliminare l’elasticità potresti cambiare il valore di parskip, ad esempio `\setlength{\parskip}{0pt}`.
Ma credo che così facendo peggioreresti solo le cose 🙂Discorso a parte va fatto nel caso di pagine in cui ci sono oggetti flottanti (figure o formule o tabelle), perché entrano in gioco altre dimensioni: \floatsep, \textfloatsep e \intextsep, definite semrpe in latex.ltx:`\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}`Per concludere: LaTeX non compone testi con una griglia di testo ben fissa, né è facile farlo. Ci si può provare con un po’ di fatica, magari con l’aiuto del pacchetto grid, ma solitamente il risultato di default è ottimo e per migliorarlo può bastare spostare o ridimensionare una figura o cambiare una riga di testo.
Fran
::
Mi aggancio alla discussione, visto che si sta parlando di qualcosa a cui ho dedica un numero spropositato di ore: canzonieri liturgici con indici tematici.
Sarebbe bello se fornissi un esempio del codice che usi e che vuoi modificare, ma intanto ti mostro io quanto ho fatto finora: https://www.dropbox.com/sh/uwbj86ctsqey65m/DqmouEvMv7
Innanzitutto:
Con songidx risulta difficile gestire titoli di canzoni che iniziano con lettere accentate, quindi lo ho abbandonato in favore di xindy. Con xindy riesco a creare un indice alfabetico generale e un indice tematico.
L’approccio [tt]\index[tematico]Momento!Titolo[\tt]funziona, ma forse serve qualche accorgimento. Nel mio codice gestisco solo un livello di indicizzazione, cioè: Offertorio-Titolo. Se vuoi Tempo LIturgico-Offertorio-Titolo è più complesso, ma non credo ci siano problemi.Alcune cose da sottolineare per il mio codice:
-usa songs 2.14, la versione 2.17 dà problemi con la codifica delle lettere accentate
-compila con xelatex con l’opzione shell escape attiva, per lanciare xindy direttamente nella compilazione.
-per creare un indice tematico occorre che nelle canzoni ci sia un comando [tt]\momenti{momenti1;momento2}}[/tt]. Ho inserito questo comando solo in alcune canzoni, a titolo di esempio. Volendo potresti attingere dalla riga %momenti{xxxx} e fare copia-incolla o scriverti uno script che lo faccia in automatico.
-Ti do tutte la canzoni che ho scritto in codice compatibile con Songs, alcune sono scritte direttamente da me, altre da amici con cui ho collaborato per la creazione di canzonieri. Sono liberamente utilizzabili, e se anche tu ne avessi da condividere sarei felice di riceverle! (il mio indirizzo mail è nel colophon di questo canzoniere)Ora non riesco a spiegarti il codice, mi spiace, se vuoi proseguiamo la conversazione via mail!
Buon lavoro.
Francesco
::
Oh già… grazie.Il creep è quella correzione che si applica durante l’imposizione tipografica per compensare il fatto che le pagine esterne di una segnatura, a causa della piegatura dei fogli, risultano spostate più verso l’interno del libro rispetto alle pagine centrali della segnatura stessa.
Se non si è capito, magari guardando qui è più chiaro:
http://www.pressproof.com/Graphics_Library/bindery/bindery_a.html
http://www.technifoldusa.com/bindery-success-blog/bid/59847/Latest-iPhone-Apps-for-the-Bindery
http://desktoppub.about.com/b/2006/10/12/calculating-creep-compensation.htmFran
::robitex” post=93212 @franen
Ho notato che non servirebbe definire un registro token dove memorizzare il testo, esiste un buon motivo per farlo?
Dove hai imparato questa libreria L3?
Qual è il pricipio di funzinamento?
Perché non scrivi un articolo per ArsTeXnica sull’argomento?
Grazie a tutti.
R.No, non c’è un buon motivo, è che ho riadattato questo comando da uno che avevo scritto tempo addietro e lì serviva creare la tl.
Ho usato questa libreria una sola volta in vita mia in uno degli esempi di uso del mio pacchetto per libretti di matrimonio.
Da quel che ho capito è utile per creare tante scatoline in cui metti quel che vuoi e che poi allinei e accoppi a tuo piacimento.
Per l’articolo intanto passo… (svelando un segreto ti dico che ne ho iniziato uno su xindy da quasi un anno ma non riesco a trovare la voglia di andare avanti 🙁 )Fran
-
AutoreRisposte