Risposte nei forum create
-
AutoreRisposte
-
::
funziona tutto. l’unica cosa se faccio banalmente`
\if\paperheight == 297mm
istruzione
\fi
`non succede niente, ne con \if ne con \ifx. il tutto deriva dalla mia ignoranza rispetto ai costrutti \if di TeX (bisogna davvero che mi metta a sfogliare il texbook)
ho arrabattato facendo:
`
\newdimen\LA@tem@dim
\setlength{\LA@tem@dim}{297mm}\ifx\paperheight\LA@tem@dim
istruzione
\fi
`ma non funziona, neppure con \if. vado a vedere se trovo la soluzione.
per ilr esto tutto bene
grazie mille
ciao
f
::è importante che l’altezza del testo sia un numero intero di righe o posso fregarmene e dare un valore esatto?
Risposta definitiva alla tua domanda non c’e’: se la pagina contiene solo testo e’ meglio che \textheight sia fissato ad un multiplo intero dell’altezza della riga, ma se ci sono figure od “inserzioni” matematiche casca il palco.
già questo è chiaro. basta mettere una figura più o meno larga, la presenza di un titolo, una tabella o una nota a piè pagina e cambia tutto.
mi chiedevo solo se normalmente si specifica un valore come multiplo di righe che “di solito” la pagina dovrebbe contenere solo righe di testo, oppure si specifica un numero esatto.ciao
f
::secondo me si può partire dall’assunto che la lista è non vuota (le classi hanno sempre almeno un opzione no?)
No.
cacchiarola, me ne accorgo ora, avevo male interpretato.
inizialmente pensavo che in
\@classoptionslist
erano contenuti tutti i parametri della classe, pure quelli di default. che ingenuo, la lista contiene solo le opzioni specificate dall’utente.
se modificare \controllo in maniera da ovviare al problema (lista vuota) non è difficile,questo fatto pone un altro problema.il mio pacchetto in un certo senso deve sapere se il foglio è settato a4, qual’è la dimensione del font in uso e se il documento è oneside o twoside.
per quanto riguarda a4paper non c’è problema perché non è di default su nessuna delle classi standard di LaTeX e quindi il pacchetto, a meno che non ci sia l’opzione esplicita, restituisce un errore.
per quanto riguarda la dimensione del font credo che di default tutte le classi standard usino 11pt, quindi anche qui non è difficile, basta che definisco 11pt come di default, e negli altri casi questo mi verrà modificato dalla dichiarazione esplicta dell’opzione.
l’unico vero problema si pone con twoside e oneside, esempio banale book e article. non posso definire nel pacchetto l’uno dei due stili come default, perché altrimenti modifico il comportamento di default di una delle due classi.bel rompicapo no?
::
O dato un’occhiata al tuo codice e a quello di geometry. per ora sono spossato e la cosa esula dalle mie possibilità. mi sono detto che allora posso cominciare a fare un piccolo comando che prenda l’opzione e la passi al pacchetto, piuttosto che:`
\documentclass[a4paper,12pt,oneside]{book}
\usepackage[rilegature=1cm]{layaureo}
`
fare semplicemnte
`
\documentclass[a4paper,12pt,oneside]{book}
\usepackage{layaureo}
\LayAureoConf{rilegatura=1cm}
`purtroppo non funziona, perché il mio pachetto setta la dimensione per la rilegatura e solo dopo assegna alla lunghezza in gioco il valore che le passo con il comando di configurazione…
oggi sono spossato, vedo se domani ci cavo qualcosa di buono.
ciao
fp.s. a parte un errorino marginale che spero presto di risolvere ho quasi finito la versione 0.1 del pacchetto.
grazie a tutti quanti mi hanno aiutato o consigliato
::
Ecco, questa è una macro che estrae le opzioni a4paper,10pt,11pt,12pt,oneside,twoside da una qualinque lista separata da virgole.`
\def\controllo#1,#2\fine{%
\def\temp@b{#1}%
\def\temp@c{a4paper}
\ifx\temp@b\temp@c
%il documento è a4\fi
\def\temp@c{12pt}%
\ifx\temp@b\temp@c
%il documento è 12pt\else
\def\temp@c{11pt}
\ifx\temp@b\temp@c
%il documento è 11pt\else
\def\temp@c{10pt}
\ifx\temp@b\temp@c
%il documento è 10pt\fi
\fi
\fi
\def\temp@c{oneside}
\ifx\temp@b\temp@c
%il documento è oneside\else
\def\temp@c{twoside}
\ifx\temp@b\temp@c
%il documento è twoside\fi
\fi
\def\temp@a{#2}%
\ifx\temp@a\@empty
\let\next\relax
\else
\def\next{\controllo#2\fine}%
\fi
\next
}
`a parte riciclare quanto mi ha detto E. non è che ci abbia messo tanto del mio, ma commento lo stesso il codice:
`
\def\controllo#1,#2\fine{%
\def\temp@b{#1}%
\def\temp@c{a4paper}
\ifx\temp@b\temp@c
%il documento è a4
\fi
`si suppone che la lista sia costituita da almeno un elemento, se ne salva il valore in \temp@b e si controlla se è uguale a a4paper.
controllo ha anche un secondo elemento, il secondo della lista, che eventualemnte può essere vuoto (lista costituita da un solo elemento).`
\def\temp@c{12pt}%
\ifx\temp@b\temp@c
%il documento è 12pt\else
\def\temp@c{11pt}
\ifx\temp@b\temp@c
%il documento è 11pt\else
\def\temp@c{10pt}
\ifx\temp@b\temp@c
%il documento è 10pt\fi
\fi
\fi
`analogamente a quanto sopra, ma si controlla l’opzione della dimensione del carattere
`
\def\temp@c{oneside}
\ifx\temp@b\temp@c
%il documento è oneside\else
\def\temp@c{twoside}
\ifx\temp@b\temp@c
%il documento è twoside\fi
\fi
`ora è il momento di oneside e twoside
`
\def\temp@a{#2}%
\ifx\temp@a\@empty
\let\next\relax
`si controlla se l’elemnto successivo a quello controllato è vuoto e in tal caso si esce
`
\else
\def\next{\controllo#2\fine}%
\fi
\next
}
`se la lista ha ancora degli elementi questi vengono ripassati in coda al comando \controllo, che ricomincia un altro ciclo.
grazie mille E. sei stato provvidenziale.
ora vado a mangià…
ciao a tutti
f
::
Secondo me c’hai piantato un erroretto:
`
\def\controllo#1,#2\fine{%
\def\temp@a{#2}%
\ifx\temp@a\@empty
\let\next\relax
\else
\def\temp@b{#1}%
\def\temp@c{12pt}%
\ifx\temp@b\temp@c
% Abbiamo beccato l'opzione 12pt
\else
\def\temp@c[11pt}%
\ifx \temp@b\temp@c
% Abbiamo beccato l'opzione 11pt
\fi
\fi
\def\next{\controllo#2\fine}%
\fi
opzione: #1\newline
\next}
`Secondo la tua definizione \controllo come prima cosa guarda se il secondo argoemnto è nullo e in tal caso esce dal ciclo.
così facendo non viene fatto nessun controllo sul primo elemento.
secondo me si può partire dall’assunto che la lista è non vuota (le classi hanno sempre almeno un opzione no?) e invertire l’ordine dei controlli, ovvero prima si controlla se il primo elemento corriponde all’opzione taldeitali, poi in caso non ci siano più elementi si esce.che ne pensi?
(ho già scritto il comando che mi salva le opzioni oneside,twoside,10pt,11pt,12pt,a4paper, che funziona da dio ma solo se l’opzione non è la prima della lista. credo manchi solo questo dettaglio e poi posto il codice completo).piccolo dettaglio tecnico: c’è un modo di usare l’if ma con il falso? \ifx\temp@a\temp@b in C sarebbe equivalente a \if{a==b}, come si fa invece a fare \if{a!=b}?
grazie infinite
f
::
Vediamo un po’ se ci capisco qualcosa
`\def\controllo#1,#2\fine{%`allora: definisci un comando chiamato controllo che ha due argomenti, separati da una virgola. se non ho capito male l’idea hai una lista di elementi e con \controllo li guardi uno per uno, fino alla fine.
\fine cos’é?` \def\temp@a{#2}%`
altro comando interno, che si becca il secondo argomento di controllo. mi par di capire che serve per vedere se ci sono aoncora elementi nella lista.` \ifx\temp@a\@empty
\let\next\relax
`
se la mia supposizione è esatta si controlla se non c’è l’n+1 elemento, in tal caso si smette di controllare. immahino \@emty voglia semplicmeente dire vuoto.
mi sfuggono i dettagli, la differenza fra \if e \ifx, cosa si fa con la seconda riga.`
\else
\def\next{\controllo#2\fine}%
\fi
`
altrimenti si definisce \next come…
qui immagino che si salvi il valore trovato.`
opzione: #1\newline
\next}`qui è abbastanza facile: si fa una bella tabellina con scritto
opzione: x
opzione: y
…come vedi E. sono davvero limitato…
Per usarlo tieni a mente che ci devi aggiungere una virgola, altrimenti l’ultimo argomento non e’ delimitato correttamente:[code]\def\pippo{ciao,a,tutti}
\expandafter\controllo\pippo,\finesi, questo è chiaro, anche se continua a sfuggirmi il significato di \fine
Nel tuo caso, invece di scivere opzione XYZ potresti testare #1 (dopo averlo infilato in una macro di appoggio come \temp@b) con \ifx.
???????????
Sul TeXbook, ovviamente 😉
già, forse era meglio studiare ancora un po’ che mettersi a smanettare sui pacchetti… lo faccio per imparare, perdonatemi…
ciao
f
::
`\newlength{\nuovadimensione}
\define@key{fbs}{opzione}[0pt]{\setlength{\nuovadimensione}{#1}}`fin qua c’ero faticosamente arrivato, creo una famiglia fbs che ha l’opzione “opzione” e che quando specificata mette la lunghezza opportuna a “nuovadimensione”.
poi ho fatto un mini comando del tipo
\comando{opzione=5pt}
e facendo
\the\nuovadimensione
trovo appunto 5pt.
quindi funziona.Poi, quando e’ il momento di elaborare le opzioni, usando \setkeys devi specificare come primo parametro la “famiglia” fbs usata nel \define@key e come secondo parametro l’elenco di tutte le opzioni. Se opzione non era accompagnata da un valore esplicito e’ posta a 0pt, altrimenti al valore indicato dall’utente (sperando che sia una lunghezza :wink:)
si però non posso infilarlo direttamente in \DeclareOption. il problema è proprio quello.
non so se mi sono spiegato male o se mi hai dato la risposta e non la capisco…
ciao
f
::
In effetti la seconda soluzione è molto più facile della prima, ma limitante.per quanto riguarda \@classoptionslist è da ieri che ci provo ma non ci cavo un ragno dal buco. ho dato un occhiata in giro e al sorgente di latex ma non ci capisco un piffero e non ho idea di come fare a estrarre le opzioni.
secondo te mi sto imbarcando in qualcosa di incasinatissimo? dove potrei documentarmi?
ciao
f
::Prendiamo, per esempio, la classe book con l’opzione 12pt e vediamo un po’ che cosa succede: \textwidht viene impostato ad una lunghezza di 5 pollici (mi pare ovvio che chi ha scritto quel codice usa l’Imperial System). Facciamo però un paio di calcoli: 5 in sono 361.35 pt, ovvero 30.1125 pc.
scusa se ti contraddico E, ma non mi tornano i conti.
sono andato a cercare su memman e ho trovato la tabella con la legge empirica di cui sopra. ho ben trovato che per un font largo 150pt la dimensione ottimale è 26-30pc e qui non ci piove.
ho fatto una minimacro per calcolare la lunghezza dell’alfabeto in cmr è effettivamente a 12pt ho trovato 150pt.
poi ho compilato \the\textwidth (oppure ho usato il pacchetto layout) e per book o article a 12 pt mi da 390pt spaccati. leggendo sempre su memman che 1pc=12pt non trovo il tuo risultato, ma anzi trovo che la larghezza del testo per 12pt è 32,5pc, per 11pt 30pc e per10pt 28.75pc tutti valori che sono già al di sopra di quanto consigliato nella tabella di cui sopra.sbaglio qualcosa o mi confermate i conti e i risultati?
ciao
f
::Sarò un criticone e anche un pasticcione, ma temo che in generale qualsiasi pacchetto, per quanto ottimo (come sarà il tuo!), non soddisferà mai a pieno tutti gli utilizzatori, che quindi difficilmente lo prenderanno a scatola chiusa… Questo almeno vale per me.
Diciamo che nella guida sarà specificato questo: se l’utilizzatore vuole ridefinirsi il layout a proprio piacimento allora che prenda per esempio il pacchetto geometry che permette di fare di tutto e si crei il proprio layout. se invece l’utente ha solo la necessità di avere un buon riempimento della pagina e non vuole studiarsi un layout da solo allora può usare il mio pacchetto.
insomma, è come dare un file di configurazione per geometry bello e pronto.– come utilizzatore, preferirei usare il tuo pacchetto senza dover richiamare anche geometry… Per te però diventa tutto più difficile, quindi io inizierei con geometry e poi eventualmente (se possibile) lo rielabolerei
anche io, ma non voglio perdermi nelle questioni tecniche. direi che potrei fare una versione beta per andare sul veloce che sfrutti a pieno geometry, farla testare a un po’ di gente e poi magari renderla indipendente.
– per i margini sopra e sotto, immagino che tu preveda intestazioni e numeri di pagina, almeno. Comunque usare ancora la sezione aurea non sarebbe male, penso. Ma in che modo la stai pensando?
si, sono previsti. per il moemento sto usando sezione aurea d’apperttutto e sono abbastanza contento del risultato.
A presto, se hai bisogno di qualcosa dimmelo,
beh, mi sono invischiato in un paio di problemi tecnici con keyval da cui non riesco a venir fuori, E. avrò bisogno di te…
ciao
f
::
Stesso problema: a volte ho usato gnuplot per grafici di funzioni (sotto linux) altrimenti uso sempre matlab. quandod evo fare qualche disegnino ripiego su CorelDraw.mi trovo abbastanza bene, perché matlab è abbastanza comodo e estremamente potente, come coreldraw. però anche io sento spesso la necessità di cui parli.
vediamo cosa dicono gli altri,
ciao
f
::
L’idea del pacchetto è la seguente:Prendiamo per esempio un testo scritto in 12pt. come dice E. la larghezza ottimale della riga è fra i 26 e i 30pc. LaTeX usa 30pc, quindi rientra nella larghezza ottimale.
è chiaro che se su un foglio a4 si vuole un layout che riempe meglio la pagina bisogna trasgredire a questa regola, almeno un po’.
dal momento che la larghezza ottimale è definita a meno di 4 pc, ho pensato che questo valore rappresenta un po’ l’incertezza in gioco, e che quindi, spingere la larghezza fino a 34pc può essere un valore accettabile.
provando il risultato, soprattutto mangiando circa un cm per la rilegatura, il foglio a4 viene effettivamente abbastanza riempito.
quindi il punto di partenza del pacchetto è la larghezza del testo, che è maggiorata contravvenendo alla regola di cui sopra.a partire da questo si costruisce il resto del layout in questo modo:
non è lasciato spazio per le note a margine, il foglio risulta già orizzontalmente riempito e se si vuole usare le note a margine sono meglio i layout tradizionali.
il layout è fatto esclusivamente per pagine a4, visto che è con tale formato che si presenta il problema di riempimento.
il rapporto di una pagina a4 è di radice di 2. il rapporto altezza larghezza testo ho deciso di farlo diverso per non dare l’idea di uno scatolone dentro l’altro. la scelta ricade sulla sezione aurea, che come è risaputo è la proporzione più elegane e armoniosa fra i lati di un rettangolo (già secondo i greci).
c’è un modo semplice per levare lo spazio dovuto alla rilegatura.
a partire dallo spazio restante i margini vengono messi uguali per il layout centrato e leggermente diversi per quello twoside.mi resta da decidere il rapporto fra bordo superiore e bordo inferiore (e fra bordo pari e dispoari per twoside). inizialmente avevo pensato di usare sempre la sezione aurea (e chiamare il pacchetto LayAureo) ma ora non sono più tanto sicuro. la scelta è abbastanza dipendente dall’uso o meno di header, soprattutto se riempono la riga.
queste sono le idee che sono sotto al pacchetto, il bello è che un ipotetico utilizzatore può semplicemente disinteressarsi alla cosa e utilizzarlo a scatola chiusa.
fatemi sapere i vostri eventuali suggerimenti.
ciao
f
::1- Cosa ho fatto ? Questa soluzione potrebbe dare altri problemi ?
Vai a vedere la guida di babel, nella mia distribuzione (sotto winzoz, quindi sarà un po’ diverso) ho due file, uno è il manuale utilizzatore l’altro è il codice dettagliato.
se vai nel primo, alla sezione relativa alla lingua italiana, vedi perché ” è stato ridefinito come carattere attivo e vedi quali sono tutte le funzionalità di babel che perdi se ne impedisci la ridefinizione.
dato che non sapevi nemmeno che esistessero tali possibilità non dovresti aver problemi, cmq una lettura te la consiglio, sono due pagine e sono molto interessanti.2- C’e’ un modo di fare qualcosa di equivalente direttamente nella tesi in modo da non dover modificare
il file di TeX italian.ldf ?si, basta che ridefinisci ” in maniera che non sia più un carattere attivo.
ciao ciao
f
::
Sto scrivendo un minipacchetto, basato su alcune considerazioni (copertura estesa della pagina vs leggibilità), che spero presto vi possa far vedere.
con geometry cambiare il layout è tecnicamente facilissimo. lo scopo del mio pacchetto non è aiutare a definirsi il proprio layout ma piuttosto dare belli pronti 6 layout, per le dimensioni 10, 11 e 12 pt e per twoside o oneside, in modo che l’utente non debba preoccuparsi della definizione del layout, fosse anche con le facilitazioni di geometry.
insomma, uno arriva è ha un layout con poco spazio bianco, ma che rispeta un po’ di criteri topografici, permette l’aggiunta dello spazio della rilegatura e soprattutto è dato a scatola chiusa.a tal proposito vorrei chiedere il vostro parere su due questioni:
a) è importante che l’altezza del testo sia un numero intero di righe o posso fregarmene e dare un valore esatto? temo solo di incappare in fastidiosi \vbox, quindi potrei approssimare l’altezza con il numero di righe standard. ma se l’utente poi cambia l’interlinea? o lo spazio fra paragrafi?
b) secondo voi è preferibile fare un pacchetto che richiama automaticamente geometry (molto più facile per me a scrivere) o uno indipendente che cambia automaticamente le dimensioni definite dalle classi standard?
ciao ciao
f
-
AutoreRisposte