- Questo topic ha 27 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 4 mesi fa da
Amedeo Giacovelli.
-
CreatoreTopic
-
10 Aprile 2013 alle 12:02 #84636::
Buon pomeriggio a tutti, raccogliendo spunti da diversi contributi in rete ho composto un comando che accetta un numero variabile di argomenti per comporre una tabella di dati:`\documentclass{book}
\begin{document}
\makeatletter
\newcommand{\McsAggiornamenti}{%
\chapter*{Aggiornamenti\markboth{Aggiornamenti}{}}
\begin{center}
\begin{tabular}{|p{0.2\textwidth}|p{0.5\textwidth}|p{0.2\textwidth}|}
\hline
\rule{0pt}{12pt}%
Data & Descrizione intervento & Autore\\
\hline
\@McsAggiornamentii % inizia la ricorsione
}
\newcommand\@McsAggiornamentii{\@ifnextchar\stopaggiornamenti{\@McsFineAggiornamenti}{\@McsAggiornamentiii}}
\newcommand\@McsAggiornamentiii[3]{%
\rule{0pt}{12pt}%
{#1} & {#2} & {#3}\\
\hline
\@McsAggiornamentii % reinizia la ricorsione
}
\newcommand\@McsFineAggiornamenti[1]{% l'argomento è \stopaggiornamenti
\end{tabular}
\end{center}
}
\makeatother\McsAggiornamenti
{Gennaio 2013}{Bla bla bla bla}{A. Verdi}
{Febbraio 2013}{Bla bla bla bla Bla bla bla bla}{A. Rossi}
\stopaggiornamenti\end{document}`
Il problema è che alla chiusura della tabella viene prodotta una riga extra vuota dovuta, ho pensato, alla presenza dell’argomento \stopaggiornamenti che non viene “consumato”.
C’è modo di consumare l’argomento oppure un modo migliore di gestire l’esigenza?
Grazie
gA
Attachments:
You must be logged in to view attached files. -
CreatoreTopic
-
AutoreRisposte
-
-
10 Aprile 2013 alle 12:30 #84637::
Bizzarra richiesta.
Comunque toglierei subito \chapter dalla definizione del comando…
Non è meglio definire un ambiente?
`\documentclass{book}\newenvironment{aggiornamenti}{%
\begin{center}
\begin{tabular}{|p{0.2\textwidth}|p{0.5\textwidth}|p{0.2\textwidth}|}
\hline
Data & Descrizione intervento & Autore\\
\hline
}{%
\hline
\end{tabular}
\end{center}
}\begin{document}
\chapter*{Aggiornamenti}
\begin{aggiornamenti}
Gennaio 2013 & Bla bla bla bla & A. Verdi\\
\hline
Febbraio 2013 & Bla bla bla bla Bla bla bla bla & A. Rossi\\
\hline
Marzo 2013 & Bla bla bla bla Bla bla & B. Gialli\\
\end{aggiornamenti}\end{document}`
R.
-
10 Aprile 2013 alle 13:01 #84638
-
10 Aprile 2013 alle 13:03 #84639::
Amedeo” post=84061Perfetto. Grazie mille.
PS: il richiamo a “chapter” è puramente incidentale
No, non è perfetto…
Questo è un codice un po’ più vicino a quello che immaginavi:
`\documentclass{book}% altezza minima della riga nella tabella
\newdimen\hr
\hr=12pt% nuovo ambiente personalizzato
\newenvironment{aggiornamenti}{%
\newcommand{\agg}[3]{\rule{0pt}{\hr}##1 & ##2 & ##3\\\hline}
\begin{center}
\begin{tabular}{|p{0.2\textwidth}|p{0.5\textwidth}|p{0.2\textwidth}|}
\hline
\rule{0pt}{\hr} Data & Descrizione intervento & Autore\\
\hline
}{%
\end{tabular}
\end{center}
}% test
\begin{document}\chapter*{Aggiornamenti}
\begin{aggiornamenti}
\agg{Gennaio 2013}{Bla bla bla bla}{A. Verdi}
\agg{Febbraio 2013}{Bla bla bla bla Bla bla bla bla}{A. Rossi}
\agg{Marzo 2013}{Bla bla bla bla Bla bla}{B. Gialli}
\end{aggiornamenti}\end{document}
`R.
-
10 Aprile 2013 alle 13:44 #84640
-
10 Aprile 2013 alle 14:02 #84641::
No, non è perfetto…
Questo è un codice un po’ più vicino a quello che immaginavi:Bravo Roberto, si tratta di senso pratico, anche perché lavorare con al ricorsione dentro una tabella è virtualmente impossibile; ogni cella costituisce ua specie di grupp a se stante; quindi qualunque ricorsione che tu faccia a tabella cominciata si esaurisce dentro al cella dentro al quale è fatta, quindi non c’è prricolo che si riesca a raggiungere la fine in modo corretto.
Tuttavia vorrei far notare che esiste un comando poco sfruttato che si chiama \arraystretch il cui valore serve per scalare lo \strutt che viene inserito nella prima cella di ogni riga di una tabella, quindi è in grado di spaziare la tabella di quel che si desidera in modo uniforme, senza bisogno i di ricorrere a una misura fissa, come \rule{0pt}{12pt} oppure a \newdimen\hr \hr=12pt; basta dare la ridefinizione, per esempio`\renewcommand\arraystretch{1.5}` e le varie righe risultano distanziate di quel che occorre (di più o di meno a seconda del fattore introdotto); tieni presente che lo \strut (pilastrino) predefinito, componendo a 10pt, è alto 8.4pt e profondo 3.6pt (circa) per u totale di 12pt; moltiplicare queste misure per 1.5 porta le due misure a circa 12.6pt e 5.4pt. Ovviamente si potrebbe scegliere un fattore di 1.4 per la definizione di \arraystretch, ma non è quello il vantaggio; il vantaggio è che si cambia anche la profondità, in modo che i filetti orizzontali non battano contro i discendenti dei caratteri contenuti nella cella; per fare le cose bene con le colonne di tipo p bisognerebbe mettere qualcosa anche alla fine del testo di ciascuna cella di tipo p, perché per impostazione predefinita lo il pilastrino che rende omogenee le altezze delle righe è pensato per tabelle le cui celle contengono una sola riga.
-
10 Aprile 2013 alle 15:52 #84642
-
10 Aprile 2013 alle 15:52 #84643::
Amedeo” post=84057Buon pomeriggio a tutti, raccogliendo spunti da diversi contributi in rete ho composto un comando che accetta un numero variabile di argomenti per comporre una tabella di dati:
`\documentclass{book}
\begin{document}
\makeatletter
\newcommand{\McsAggiornamenti}{%
\chapter*{Aggiornamenti\markboth{Aggiornamenti}{}}
\begin{center}
\begin{tabular}{|p{0.2\textwidth}|p{0.5\textwidth}|p{0.2\textwidth}|}
\hline
\rule{0pt}{12pt}%
Data & Descrizione intervento & Autore\\
\hline
\@McsAggiornamentii % inizia la ricorsione
}
\newcommand\@McsAggiornamentii{\@ifnextchar\stopaggiornamenti{\@McsFineAggiornamenti}{\@McsAggiornamentiii}}
\newcommand\@McsAggiornamentiii[3]{%
\rule{0pt}{12pt}%
{#1} & {#2} & {#3}\\
\hline
\@McsAggiornamentii % reinizia la ricorsione
}
\newcommand\@McsFineAggiornamenti[1]{% l'argomento è \stopaggiornamenti
\end{tabular}
\end{center}
}
\makeatother\McsAggiornamenti
{Gennaio 2013}{Bla bla bla bla}{A. Verdi}
{Febbraio 2013}{Bla bla bla bla Bla bla bla bla}{A. Rossi}
\stopaggiornamenti\end{document}`
Il problema è che alla chiusura della tabella viene prodotta una riga extra vuota dovuta, ho pensato, alla presenza dell’argomento \stopaggiornamenti che non viene “consumato”.
C’è modo di consumare l’argomento oppure un modo migliore di gestire l’esigenza?
Grazie
gA
Eviterei questo tipo di approccio. Meglio costruirsi la tabella un pezzo alla volta.
`\documentclass{book}
\usepackage{xparse,booktabs,calc,tabularx}\ExplSyntaxOn
\NewDocumentCommand{\McsAggiornamento}{m}
{
\keys_set:nn {mcsaggiornamenti} { #1 }
\amedeo_aggiorna:
}
\NewDocumentCommand{\StampaAggiornamenti}{ }
{
\begin{center}
\begin{tabular}{
p{.3\textwidth-2\tabcolsep}
p{.5\textwidth-2\tabcolsep}
p{.2\textwidth-2\tabcolsep}
}
\toprule
Data & Descrizione~intervento & Autore\\
\midrule
\tl_use:N \l_amedeo_aggiornamenti_tl
\bottomrule
\end{tabular}
\end{center}
\tl_clear:N \l_amedeo_aggiornamenti_tl
}\tl_new:N \l_amedeo_aggiornamenti_tl
\keys_define:nn {mcsaggiornamenti}
{
data .tl_set:N = \l__amedeo_data_tl,
descr .tl_set:N = \l__amedeo_descr_tl,
autore .tl_set:N = \l__amedeo_autore_tl,
}
\cs_new_protected:Npn \amedeo_aggiorna:
{
\tl_put_right:NV \l_amedeo_aggiornamenti_tl \l__amedeo_data_tl
\tl_put_right:Nn \l_amedeo_aggiornamenti_tl {&}
\tl_put_right:NV \l_amedeo_aggiornamenti_tl \l__amedeo_descr_tl
\tl_put_right:Nn \l_amedeo_aggiornamenti_tl {&}
\tl_put_right:NV \l_amedeo_aggiornamenti_tl \l__amedeo_autore_tl
\tl_put_right:Nn \l_amedeo_aggiornamenti_tl {\\}
}
\ExplSyntaxOff\begin{document}
\chapter*{Aggiornamenti\markboth{Aggiornamenti}{}}\McsAggiornamento{
data =Gennaio 2013,
autore=A. Verdi,
descr =Bla bla bla bla,
}
\McsAggiornamento{
autore=A. Rossi,
data =Febbraio 2013,
descr =Bla bla bla bla Bla bla bla bla,
}\StampaAggiornamenti
\end{document}`
Ogni aggiornamento ha il suo posto ed è più facile maneggiarli. Non occorre nemmeno un ordine preciso nei dati, visto che si usa una coppia “chiave-valore”.Ciao
Enrico
-
10 Aprile 2013 alle 16:01 #84644
-
11 Aprile 2013 alle 5:03 #84645
-
11 Aprile 2013 alle 6:19 #84646::
robitex” post=84079 @Enrico,
perché svuotare la variabile tl dove risiede il corpo della tabella?
Potrei voler riutilizzare le informazioni delle righe, magari con uno stile di tabella diverso.
Comunque sia il codice L3 è molto più leggibile ed elegante di quello a cui siamo abituati.Perché? Ho pensato che si tratti di informazioni riguardanti una certa parte del documento. Se si dovesse mantenere più di un gruppo di informazioni simili, sarebbe semplice aggiungere un argomanto facoltativo a [tt]\McsAggiornamento[/tt] in modo che si agisca su una particolare token list appropriata.
Ciao
Enrico
-
11 Aprile 2013 alle 11:34 #84647::
Grazie a tutti per la profusione di proposte.Mi piace molto la soluzione proposta da egreg9 [schema di composizione della tabella con chiavi]; penso, però, che nel caso di utilizzo del medesimo approccio per più tipi di tabelle (es. Aggiornamenti, Allegati, Approvazioni, etc.), occorrerebbe scrivere molto codice, in gran parte simile.
Un ultimo commento: ho letto che il package “tabu” supera tutti gli altri precedenti packages. Cambia molto la sintassi? E nel caso la lista degli aggiornamenti fosse molto lunga e andasse oltre la pagina, immagino non sia più utilizzabile la stessa sintassi, giusto?
-
11 Aprile 2013 alle 11:38 #84648
-
11 Aprile 2013 alle 16:57 #84649
-
11 Aprile 2013 alle 18:03 #84650::
Amedeo” post=84097Grazie a tutti per la profusione di proposte.
Mi piace molto la soluzione proposta da egreg9 [schema di composizione della tabella con chiavi]; penso, però, che nel caso di utilizzo del medesimo approccio per più tipi di tabelle (es. Aggiornamenti, Allegati, Approvazioni, etc.), occorrerebbe scrivere molto codice, in gran parte simile.
Un ultimo commento: ho letto che il package “tabu” supera tutti gli altri precedenti packages. Cambia molto la sintassi? E nel caso la lista degli aggiornamenti fosse molto lunga e andasse oltre la pagina, immagino non sia più utilizzabile la stessa sintassi, giusto?
Non ti consiglio tabu, per vari motivi.
1. La documentazione è illeggibile
2. I bachi sono molti
3. Dovrebbe uscire una nuova versione (non si sa quando)
3. L’autore ha detto esplicitamente, in risposta a una mia domanda riguardo alla compatibilità con la versione precedente, “I don’t care”.Ciò significa che ogni documento che usa ora tabu potrebbe non funzionare più (o dare risultati inaspettati) con la prossima versione.
Ciao
Enrico
-
1 Maggio 2013 alle 16:06 #84651::
Ciao a tutti, riprendendo il tema in oggetto e volendo definire un con un numero di parametri superiore a 9 e noto a priori (es. 11), quale è la strada migliore? Alcuni esempi che ho trovato sfruttano la definizione di “variabili” di comodo in cui parcheggiare i valori dei primi 9 argomenti, chiamando quindi un comando a cascata che interpreta i rimenenti parametri ed utilizza le variabili di comodo precedentemente definite. Di seguito la prova che ho fatto:
`
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{calc}
\usepackage{tabularx}
\usepackage{booktabs}\newcommand\McsTcw[1]{#1\textwidth-2\tabcolsep}
\newenvironment{McsTabFive}[9]{%
\def\McsTabFiveA{#1}
\def\McsTabFiveB{#2}
\def\McsTabFiveC{#3}
\def\McsTabFiveD{#4}
\def\McsTabFiveE{#5}
\def\McsTabFiveF{#6}
\def\McsTabFiveG{#7}
\def\McsTabFiveH{#8}
\def\McsTabFiveI{#9}
\begin{McsTabFiveP}
}{
\end{McsTabFiveP}
}
\newenvironment{McsTabFiveP}[1]{%
\begin{small}
\begin{center}
\begin{tabular}{
p{\McsTabFiveB}
p{\McsTabFiveD}
p{\McsTabFiveF}
p{\McsTabFiveH}
p{#1}}
\toprule
{\McsTabFiveA} & {\McsTabFiveC} & {\McsTabFiveE} & {\McsTabFiveG} & {\McsTabFiveI} \\
}{%
\bottomrule
\end{tabular}
\end{center}
\end{small}
}
\newcommand\McsRigaTabFive[5]{%
\midrule
{#1} & {#2} & {#3} & {#4} & {#5} \\
}\begin{document}
\begin{McsTabFive}{Col1}{\McsTcw{.2}}{Col2}{\McsTcw{.2}}{Col3}{\McsTcw{.2}}{Col4}{\McsTcw{.2}}{Col5}{\McsTcw{.2}}
\McsRigaTabFive {aaa}{bbb}{ccc}{ddd}{eee}
\McsRigaTabFive {aaa}{bbb}{ccc}{ddd}{eee}
\end{McsTabFive}
\end{document}
`
Di funzionare funziona, ma forse vi sono modi più eleganti che non implichino una programmazione spinta.Grazie come sempre per ogni contributo.
a
-
1 Maggio 2013 alle 18:34 #84652::
Amedeo” post=84860Ciao a tutti, riprendendo il tema in oggetto e volendo definire un con un numero di parametri superiore a 9 e noto a priori (es. 11), quale è la strada migliore? Alcuni esempi che ho trovato sfruttano la definizione di “variabili” di comodo in cui parcheggiare i valori dei primi 9 argomenti, chiamando quindi un comando a cascata che interpreta i rimenenti parametri ed utilizza le variabili di comodo precedentemente definite. Di seguito la prova che ho fatto:
`
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{calc}
\usepackage{tabularx}
\usepackage{booktabs}\newcommand\McsTcw[1]{#1\textwidth-2\tabcolsep}
\newenvironment{McsTabFive}[9]{%
\def\McsTabFiveA{#1}
\def\McsTabFiveB{#2}
\def\McsTabFiveC{#3}
\def\McsTabFiveD{#4}
\def\McsTabFiveE{#5}
\def\McsTabFiveF{#6}
\def\McsTabFiveG{#7}
\def\McsTabFiveH{#8}
\def\McsTabFiveI{#9}
\begin{McsTabFiveP}
}{
\end{McsTabFiveP}
}
\newenvironment{McsTabFiveP}[1]{%
\begin{small}
\begin{center}
\begin{tabular}{
p{\McsTabFiveB}
p{\McsTabFiveD}
p{\McsTabFiveF}
p{\McsTabFiveH}
p{#1}}
\toprule
{\McsTabFiveA} & {\McsTabFiveC} & {\McsTabFiveE} & {\McsTabFiveG} & {\McsTabFiveI} \\
}{%
\bottomrule
\end{tabular}
\end{center}
\end{small}
}
\newcommand\McsRigaTabFive[5]{%
\midrule
{#1} & {#2} & {#3} & {#4} & {#5} \\
}\begin{document}
\begin{McsTabFive}{Col1}{\McsTcw{.2}}{Col2}{\McsTcw{.2}}{Col3}{\McsTcw{.2}}{Col4}{\McsTcw{.2}}{Col5}{\McsTcw{.2}}
\McsRigaTabFive {aaa}{bbb}{ccc}{ddd}{eee}
\McsRigaTabFive {aaa}{bbb}{ccc}{ddd}{eee}
\end{McsTabFive}
\end{document}
`
Di funzionare funziona, ma forse vi sono modi più eleganti che non implichino una programmazione spinta.Grazie come sempre per ogni contributo.
a
Undici argomenti? Devi contarli e ti ci perdi. Molto meglio una sintassi “chiave-valore”:
`\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{calc}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{xparse}\ExplSyntaxOn
\keys_define:nn { amedeotab }
{
col1 .tl_set:N = \l_amedeo_col_i_tl,
col2 .tl_set:N = \l_amedeo_col_ii_tl,
col3 .tl_set:N = \l_amedeo_col_iii_tl,
col4 .tl_set:N = \l_amedeo_col_iv_tl,
col5 .tl_set:N = \l_amedeo_col_v_tl,
dim1 .tl_set:N = \l_amedeo_colwd_i_tl,
dim2 .tl_set:N = \l_amedeo_colwd_ii_tl,
dim3 .tl_set:N = \l_amedeo_colwd_iii_tl,
dim4 .tl_set:N = \l_amedeo_colwd_iv_tl,
dim5 .tl_set:N = \l_amedeo_colwd_v_tl,
}
\tl_new:N \l_amedeo_tab_contents_tl\NewDocumentEnvironment{ McsTabFive } { m }
{
\keys_set:nn { amedeotab } { #1 }
\begin{center}\small
\tl_put_right:Nx \l_amedeo_tab_contents_tl
{
\exp_not:n { \begin{tabular} }
{
p{ \dim_eval:n { \l_amedeo_colwd_i_tl \textwidth – 2\tabcolsep } }
p{ \dim_eval:n { \l_amedeo_colwd_ii_tl \textwidth – 2\tabcolsep } }
p{ \dim_eval:n { \l_amedeo_colwd_iii_tl \textwidth – 2\tabcolsep } }
p{ \dim_eval:n { \l_amedeo_colwd_iv_tl \textwidth – 2\tabcolsep } }
p{ \dim_eval:n { \l_amedeo_colwd_v_tl \textwidth – 2\tabcolsep } }
}
}
\tl_put_right:Nn \l_amedeo_tab_contents_tl
{
\toprule
\l_amedeo_col_i_tl &
\l_amedeo_col_ii_tl &
\l_amedeo_col_iii_tl &
\l_amedeo_col_iv_tl &
\l_amedeo_col_v_tl \\
}
}
{
\tl_use:N \l_amedeo_tab_contents_tl
\bottomrule
\end{tabular}
\end{center}
}\NewDocumentCommand{\McsRiga}{ mmmmm }
{
\tl_put_right:Nn \l_amedeo_tab_contents_tl
{\midrule #1 & #2 & #3 & #4 & #5 \\}
}
\ExplSyntaxOff\begin{document}
\begin{McsTabFive}{
col1=Col1, dim1=.2,
col2=Col2, dim2=.2,
col3=Col3, dim3=.2,
col4=Col4, dim4=.2,
col5=Col5, dim5=.2
}
\McsRiga{aaa}{bbb}{ccc}{ddd}{eee}
\McsRiga{aaa}{bbb}{ccc}{ddd}{eee}
\end{McsTabFive}
\end{document}`
Non è poi così difficile, te l’assicuro. La tabella è costruita un pezzo alla volta (le tabelle sono sempre un po’ ostiche) e poi composta tutta alla fine.Ciao
Enrico
-
3 Maggio 2013 alle 5:35 #84653::
Grazie Claudio. Non conosco per niente il package xparse e mi piacerebe approfondire (mi avevi già dato un suggerimento in tal senso per la tabella Aggiornamenti). Ho scaricato xparse.pdf ma è davvero molto tecnico. Sai se c’è una guida più umana che spieghi la sintassi d’uso?Per inciso, ho tagliato e incollato il tuo esempio in un file di prova. Alla compilazione mi segnala un errore alla riga di chiusura della tabella (\end{McsTabFive}): illegal parameter number in definition of \l_exp_tl.
1 \end{McsTabFive} a
-
3 Maggio 2013 alle 8:05 #84654::
Amedeo” post=84896Grazie Claudio. Non conosco per niente il package xparse e mi piacerebe approfondire (mi avevi già dato un suggerimento in tal senso per la tabella Aggiornamenti). Ho scaricato xparse.pdf ma è davvero molto tecnico. Sai se c’è una guida più umana che spieghi la sintassi d’uso?
Per inciso, ho tagliato e incollato il tuo esempio in un file di prova. Alla compilazione mi segnala un errore alla riga di chiusura della tabella (\end{McsTabFive}): illegal parameter number in definition of \l_exp_tl.
1 \end{McsTabFive} a
Claudio?
Non ricevo alcun errore. Aggiorna la tua distribuzione TeX e poi riprova.
Ciao
Enrico
-
3 Maggio 2013 alle 11:24 #84655::
Scusa Enrico, ho sbagliato nome. La distribuzione Latex sul mio Ubuntu è quella del 2009. Questa serà proverò ad aggiornarla e saprò dire.Come documentazione ho trovato un “paper” piuttosto corposo intitolato LaTeX3 Sources prodotto dal gruppo di progetto LaTeX3. Certo, è un pò avaro di esempi ma vi ho trovato le spiegazioni che cercavo, almeno per orientarmi nel codice che hai suggerito.
Grazie
a
-
3 Maggio 2013 alle 12:55 #84656::
Amedeo” post=84899Scusa Enrico, ho sbagliato nome. La distribuzione Latex sul mio Ubuntu è quella del 2009. Questa serà proverò ad aggiornarla e saprò dire.
Come documentazione ho trovato un “paper” piuttosto corposo intitolato LaTeX3 Sources prodotto dal gruppo di progetto LaTeX3. Certo, è un pò avaro di esempi ma vi ho trovato le spiegazioni che cercavo, almeno per orientarmi nel codice che hai suggerito.
[tt]interface3.pdf[/tt]
Ciao
Enrico
-
3 Maggio 2013 alle 13:32 #84657::
Amedeo” post=84899Scusa Enrico, ho sbagliato nome. La distribuzione Latex sul mio Ubuntu è quella del 2009. Questa serà proverò ad aggiornarla e saprò dire.
@Amedeo, quante vole abbiamo scritto qui sul forum che la distribuzione TeXLive/Debian montata da Ubuntu è normalmente indietro di 2 o 3 anni.Installa una TeX Live vera seguendo le istruzioni del documento texlive-ubuntu.pdf che trovi in rete; non importa se la distribuzione che puoi installare ora è la TeX Live 2012; ma dal 31 marzo scorso è cominciato il periodo di congelamento della distribuzione, per dare il tempo al Team TeX Live di confezionare/impacchettare la versione 2013.
Per te la 2012 è già un aggiornamento di 3 anni; poi a luglio ricordati di installare la 2013.
La distribuzione TeX Live vera, quella scaricata da CTAN o dai suoi mirro dispone del TeX Live Manager (tlmgr) che permette di eseguire l’upgrade, volendo, tutti i giorni; una volta ogni settimana o ogni 10 giorni è più che sufficiente, e ti accorgerai che ci sono ogni volta una cinquantina di pacchetti di cui eseguire l’upgrade 😯
TeX Live sta subendo un rinnovamento così tumultuoso in questi ulti anni che restare indietro di 2 o tre anni vuol dire restare moooolto indietro. Quindi, coraggio; installa la TeX Live vera; sul tuo Linux possono starci entrambe; quella vera per lavorare; quella Debian per soddisfare le dipendneze degli altri pacchetti Debian.
-
3 Maggio 2013 alle 14:05 #84658::
OldClaudio” post=84901 sul tuo Linux possono starci entrambe; quella vera per lavorare; quella Debian per soddisfare le dipendneze degli altri pacchetti Debian.
Com’è stato detto più volte anche in questo forum,
basta ricorrere ad equivs per non installare la versione Debian
e soddisfare comunque le dipendenze senza occupare spaziom
-
3 Maggio 2013 alle 14:57 #84659::
È vero, ma siccome non è scritto nel documento texlive-ubuntu.pdf, che comunque bisogna seguire con cura anche per avere a bordo una sola versione di TeX Live il cui albero sarebbe opportuno che non fosse lo stesso in cui si trova la versione Debian, non aggiungo mai nelle raccomandazioni di usare equivs, perché richiede comunque un utente Linux molto esperto; certo se è molto esperto, lo sa da solo che per le equivalenze puù usare equivs.Ricorda anche che io non sono un utente Linux da quasi 7 anni; quindi quel che conoscevo allora, oggi l’ho dimenticato per mancanza d’esercizio, anche se tengo in piedi una versione Ubuntu virtuale, giusto per averne una sottomano; in realtà la uso solo per aggiornarla, perché preferisco lavorare sui miei due Mac (fisso + portatile) 😉
-
4 Maggio 2013 alle 14:11 #84660::
Ringrazio tutti per i preziosi consigli e rimbrotti 😀 . Ho installato texlive 2012 ed ora funziona tutto. Per chiudere il topic, con riferimento al codice suggerito da Enrico, i nomi delle diverse variabili utilizzate seguono una certa convenzione che richiama quella utilizzata dal package xparse (e più in generale, credo, da expl3). Ho però notato che questo non è necessario, ovvero posso utilizzare qualunque nome, purchè sintatticamente accettabile (es. \tl_new:N \McsTabFiveCanvas al posto di \tl_new:N \l_amedeo_tab_contents_tl). Vi sono ragioni filologiche per mantenere le convenzioni di expl3 nella nomenclatura di nuove funzioni e variabili?Grazie ancora
a
-
4 Maggio 2013 alle 15:35 #84661::
Amedeo” post=84938Ringrazio tutti per i preziosi consigli e rimbrotti 😀 . Ho installato texlive 2012 ed ora funziona tutto. Per chiudere il topic, con riferimento al codice suggerito da Enrico, i nomi delle diverse variabili utilizzate seguono una certa convenzione che richiama quella utilizzata dal package xparse (e più in generale, credo, da expl3). Ho però notato che questo non è necessario, ovvero posso utilizzare qualunque nome, purchè sintatticamente accettabile (es. \tl_new:N \McsTabFiveCanvas al posto di \tl_new:N \l_amedeo_tab_contents_tl). Vi sono ragioni filologiche per mantenere le convenzioni di expl3 nella nomenclatura di nuove funzioni e variabili?
Puoi usare i nomi che vuoi, ma poi non lamentarti che le cose non funzionano. 🙂
Nell’ambiente di programmazione è raccomandato di seguire le convenzioni. Il seguito non è tutta la verità, ma una sua buona approssimazione.
• Le funzioni (i comandi, detto in altro modo) hanno un prefisso e un nome separati da [tt]_[/tt]; il nome può essere diviso in più parti, sempre separate da [tt]_[/tt]; segue [tt]:[/tt] e la segnatura, cioè una successione di lettere che dicono il genere di argomenti che la funzione si attende.
• Le variabili cominciano con [tt]l_[/tt] o con [tt]g_[/tt], seguiti da prefisso e nome e, per finire, il tipo di variabile ([tt]_tl[/tt] per le “token list”, [tt]_bool[/tt] per le variabili booleane, …)
• Le costanti hanno la stessa convenzione delle variabili, ma cominciano con [tt]c_[/tt].
Le variabili del tipo [tt]l_[/tt] vanno sempre maneggiate con assegnazioni locali, quelle con [tt]g_[/tt] con assegnazioni globali.
Segui queste convenzioni.
Ciao
Enrico
-
5 Maggio 2013 alle 7:36 #84662
-
5 Maggio 2013 alle 8:25 #84663
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.