- Questo topic ha 12 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 6 mesi fa da
IL_MAGO_GANDALF.
-
CreatoreTopic
-
12 Febbraio 2015 alle 15:47 #100221::
Gentilissimi,
da indicazioni dell’autore (il sig. Gustavo) con la speranza che possa essere utile a molti utenti, mi accingo ad inserire il post per la personalizzazione della carta intestata.
Oltre la vera e propria personalizzazione mi ero posto come obiettivo il capirci qualcosa in più.
Passiamo al problema.
Ho creato due immagini in png che ho sistemato in due box:
`
\savebox\@logo@base[\z@][r]{\setlength\unitlength{1ex}%
\begin{picture}(0,0)
\put(x,y){\makebox(0,0)[br]{
\includegraphics[width=a0]{Logo1-sx.png}
}
}
\end{picture}
}
% prima parte del logo\savebox\@logo@addizionale[\z@][r]{\setlength\unitlength{1ex}%
\begin{picture}(0,0)
\put(x1,y1){\makebox(0,0)[br]{
\includegraphics[width=a1]{Logo2-sx.png}
}
}
\end{picture}
}
%seconda parte logo\@ifdefinable\@logo@overlapping{\def\@logo@overlapping{%
\@lh@left@margin %
\copy\@logo@base}
}% inserisco l'opportuna distanza dal margine sinistro di quello che considero il logo base\@ifdefinable\@Ale@head{\def\@Ale@head{%
\hrulefil
\@logo@overlapping\copy\logo@addizionale\@lh@right@margin %
\hrulefil
}}% creo la testatina
`
Come si sarà capito l’obiettivo sono le due immagini (due tartarughine traslate) l’una più in alto dell’altra centrate nella pagina con due righe laterali che si estendono per tutta la larghezza e che terminano a precisa distanza dai bordi.
Al di là della nuova versione che sarà più semplice da maneggiare,questi due stralci mi danno l’idea solo di aver assorbito bene i concetti.
Quello che mi chiedo è
1 – se è corretta la costruzione per ottenere ciò che avevo pensato (sia pure se la soluzione è poco elegante e/o poco funzionale)
2 – se per fissare le distanze dei filetti dai bordi è corretta la costruzione
3 – come predisporre il tutto per spostare in altezza le righe orizzontali.
Nella speranza che tutto ciò possa essere di aiuto a qualcuno ringrazio tutti per i preziosi contributi
Alessandrops @Prof Gustavo, il doc che spiega il criterio delle routine che sono all’interno, è l’RFC?
pps se volete posso anche postare le due immagini che volevo utilizzare ma non credo siano utili al ragionamento.
-
CreatoreTopic
-
AutoreRisposte
-
-
12 Febbraio 2015 alle 18:55 #100222::
Con la versione 0.36 del C.D.P. Bundle, tutti quesi maneggi contorti diventano inutili. Il problema di Alessandro è un buon esempio, perché si tratta di una carta intestata che integra figure caricate da file grafici ed elementi geometrici specificabili facilmente via LaTeX. Per risolverlo, si farà semplicemente la cosa ovvia: si usa un ambiente picture (abbiamo da realizzare un disegno elementare, quindi picture basta e avanza) assieme a comandi \includegraphics. Diciamo anche che non vogliamo produrre un solo documento, ma definire una classe di documento personale per le nostre lettera, chiamata per esempio, “letteratarta”. Anzi, diciamo, che vogliamo anche creare il nostro analogo personale della classe “articoletteracdp”, classe che decidiamo di chiamare “articoletteratarta”. Ecco come si fa.Innanzitutto, creiamo i file delle due classi. Prima il file “letteratarta.cls”:
`
\NeedsTeXFormat{LaTeX2e}\relax % LaTeX2e is required!
\ProvidesClass{letteratarta}
[2015/02/12 v0.01 (development)]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{letteracdp}}
\ProcessOptions\relax
\LoadClass{letteracdp}[2015/02/08]
\input{tartarughe.def}
\endinput
`Poi il file “articoletteratarta.cls”:
`
\NeedsTeXFormat{LaTeX2e}\relax % LaTeX2e is required!
\ProvidesClass{articoletteratarta}
[2015/02/12 v0.01 (development)]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{articoletteracdp}}
\ProcessOptions\relax
\LoadClass{articoletteracdp}[2015/02/08]
\input{tartarughe.def}
\endinput
`Come si vede, questi due file sono solo un involucro esterno che rimanda all’unico file dove viene effettivamente definita la carta intestata, il file “tartarughe.def”:
`
\ProvidesFile{tartarughe.def}[2015/02/12 v0.01 (development)]\RequirePackage[customletterhead]{cdpaddon}[2015/02/08]
% Per adesso niente colori, ma chissa`…
% \RequirePackage{color}
\RequirePackage{graphicx}
% Il pacchetto pict2e renderebbe piu` semplice ed elegante il tracciamento
% delle linee, ma diciamo che vogliamo fare economia e ci rinunciamo.
% (N.B.: se avessimo anche linee oblique, non ci converrebbe essere cosi`
% taccagni… 😉
% \RequirePackage{pict2e}\begin{customletterhead}{\textwidth}
\centering
\setlength{\unitlength}{1cm} % diciamo
% Origine delle coordinate al centro della linea di base della testatina;
% non ci interessa l'ingombro effettivo della costruzion.
\begin{picture}(0,0)
% Aggiustare, ovviamente, coordinate, fattori di scala, lunghezza delle
% linee eccetera, magari per tentativi ed errori.
%
% Prima tartaruga:
\put(.2,.3){\includegraphics[scale=.2]{Logo1-sx}} % meglio omettere l'estensione
%
% Seconda tartaruga:
\put(-2,-.1){\includegraphics[scale=.2]{Logo2-sx}}
%
% Linee a volonta`! Sarebbe piu` facile usare il comando \Line di
% pict2e, comunque…
\put(-2.5,0){\line(-1,0){5}}
\put(1,0){\line(1,0){3}}
% …
\end{picture}
\end{customletterhead}\begin{customletterfoot}{\textwidth}
\fontsize{5}{6}\usefont{T1}{pplx}{m}{n}
\ruleacrossheadorfoot
\noindent
\begin{minipage}[t]{.4\textwidth}
\raggedright \strut
Tartaruga Uno\\
Suo indirizzo\\
\ldots
\end{minipage}
\hfill
\begin{minipage}[t]{.4\textwidth}
\raggedleft \strut
Tartaruga Due\\
Suo Indirizzo\\
\ldots
\end{minipage}
\end{customletterfoot}\endinput
`
Naturalmente, bisogna che i file “Logo1-sx.png” e “Logo2-sx.png” esistano da qualche parte.Ecco fatto: mettiamo i tre file “letteratarta.cls”, “articoletteratarta.cls” e “tartarughe.def” in una delle nostre directory di input del LaTeX personali e vediamo se funzionano sul seguente file di prova:
`
\documentclass
[boldsubject,italicsignature,shortindent,signaturerule]
{letteratarta}
\usepackage[T1]{fontenc}
\usepackage[italian]{cdpbabel}
\usepackage{lipsum}\address{
Tartarughe Uno \& Due\\
Loro Indirizzo\\
\ldots
}
\signature{Tartaruga Uno\and Tartaruga Due}
\place{Fate Voi}
\date{12~febbraio 2015}\begin{document}
\begin{foldedletterhead}[R.~J.~Drofnats]{
Pinco \textsc{Pallino}\\
Viale Arcangelo Gabriele, 99\\
33170\quad PORDENONE\quad PN
}[
Carta intestata con immagini.
]\opening{Caro Pinco,}
\lipsum[1-2]
\closing{Cordiali saluti.}
\end{foldedletterhead}
\end{document}
`Be’, sarà il caso di posizionare al posto giusto immagini e linee, che ne dite?:smile:
Ciao.
—
Gustavo
-
12 Febbraio 2015 alle 21:15 #100223::
Gustavo, secondo me il file cdpbabel.sty contiene un grave errore; vi si definisce il comando \do con \def e non con \newcommand; se l”avessi fatto con \newcommand ti saresti accorto dell’errore, perché \do è già definito; ma quel che è più grave è che \do fa parte del kernel di LaTeX, quindi ridefinendolo si mandano a ramengo un certo numero di funzionalità di LaTeX.La cura per questi casi è di creare pacchetti che abbiano uno space-name assolutamente unico; per quei pochi comandi che non possono ricorrere allo space-name interno, si userà sempre \newcommand, oppure, se si sa che cosa si sta facendo, \renewcommand, oppure si rattoppano comandi esistenti mediante le funzionalità del pacchetto xpatch.
Alternativamente all’inizo del file si crea un alias col nome originale, per esempio \let]cdp@do\do poi si definisce il tutto con \def (cosa che qualche volta potrebbe essere necessaria se si dovessero usare argomenti delimitati) ma alla fine del file si ripristina il significato originale con \let\do\cdp@do
Nel caso specifico ti basta cambiare nome al comando \do e chiamarlo, per esempio, \cdp@do (col prefisso \cdp@ che caratterizza lo space-name del pacchetto), e tutto si risolve.
-
12 Febbraio 2015 alle 22:01 #100224::
Sì, ma \do non è un comando “usa e getta”, un po’ come \count@, \box0, ecc.? Per esempio, quando voglio fare qualcosa ai caratteri “speciali” definisco \do#1{…} in modo che faccia quello che voglio e chiamo \dospecials. È usato dappertutto in questo senso, fin dal formato plain TeX. Sono vent’anni che uso e vedo usare \do in questo modo, e non mi è mai andato a remengo niente; finito di usarlo, diligentemente lo rilascio:`\let \do = \@undefined`(lo fa anche letteracdp.cls, alla fine del file). Direi che in vent’anni dovrebbe ben essermi capitato di rompere qualcosa!Ciao.
—
Gustavo
-
13 Febbraio 2015 alle 6:47 #100225::
letteracdp” post=99939Be’, sarà il caso di posizionare al posto giusto immagini e linee, che ne dite?:smile:
Direi proprio di si, visto che facendo una prova con il pacchetto mwe per immagini campione il risultato è il seguente:
[attachment=1261]ScreenShot2015-02-13at8.33.14AM.png[/attachment]
In fatto di grafica, negli ultimi 20 anni è successo qualcosa. Purtroppo, con picture, non si possono dare nomi ad oggetti da utilizzare successivamente per tracciare i segmenti e le possibilità che l’utente personalizzi il risultato sono zero. Senza contare il fatto che si “vende” la possibilità di introdurre il colore come qualcosa di magico…
Le cose importanti, quindi, sono le seguenti: 1) l’utente deve poter includere il nome dei loghi dal file .tex, non tramite un file apposito di definizione (altrimenti diventa troppo complicato); 2) file diversi possono avere dimensioni diverse, quindi tracciare i segmenti in modo “statico” non è efficace.
Mi orienterei quindi su TikZ o almeno PSTricks..
Ciao
Claudio
Attachments:
You must be logged in to view attached files. -
13 Febbraio 2015 alle 9:33 #100226::
Carissimi grazie davvero!
@Gustavo: scusami ma sto cercando di entrare nel dettaglio:i valori prefissati delle distanze dai bordi dx e sx sono sempre fissate dai due \@lh@…?
Nell’esempio la parte deputata al tracciamento delle riche orizzontali nello specifico del codice quale sarebbe?
Vedo questa sequenza di controllo il cui nome suggerisce molto…\ruleacrossheadorfoot. Sbaglio?
Un saluto ed un grazie ancora e tutti
Alessandro
-
13 Febbraio 2015 alle 18:22 #100227::
Chiaramente 🙂 il mio scopo era solo quello di dare l’idea generale. Il problema posto da Alessandro era: «voglio includere nella carta intestata due immagini posizionate so io dove e due righe tracciate so io da dove a dove». Le coordinate dei \put le ho messe a casaccio, proprio per sottolineare questa arbitrarietà.Dicevo anche che «picture basta e avanza» se devo tracciare solo due linee; con ciò alludevo proprio al fatto che ciascuno, poi, nel proprio caso concreto, userà tutti i pacchetti che più ritiene adatti alle sue particolari esigenze (e avevo in mente proprio TikZ). Insomma, avete la vostra minipage: potete farci quello che volete! 🙂 (Però, non è che uno deve caricare pacchetti solo per dimostrare di essere à la page 😉 ; ogni pacchetto ha le sue specifiche ragioni per venire utilizzato. È ancora lecito usare il LaTeX puro e semplice, se basta per quello che si deve fare.)
cfiandra” post=99943[…]
Le cose importanti, quindi, sono le seguenti: 1) l’utente deve poter includere il nome dei loghi dal file .tex, non tramite un file apposito di definizione (altrimenti diventa troppo complicato)[…]
Qui abbiamo detto che volevamo definire delle classi personalizzate per la nostra carta intestata: non è affatto necessario fare così. Leggi la documentazione.
Ciao.
—
Gustavo
-
13 Febbraio 2015 alle 18:33 #100228::
@IL_MAGO_GANDALF: ripeto, dimentica le macro interne di letteracdp una volta per tutte. Usa i normali mezzi che useresti normalmente per realizzare la composizione tipografica che hai in mente. Sui mezzi più recenti io, che rispetto a la page sono rimasto molto indietro, non mi sento affatto in grado di fare da maestro: cedo volentieri la parola a chi ne sa molto più di me.Ciao.
—
Gustavo
-
13 Febbraio 2015 alle 23:46 #100229::
letteracdp” post=99942Sì, ma \do non è un comando “usa e getta”, un po’ come \count@, \box0, ecc.? Per esempio, quando voglio fare qualcosa ai caratteri “speciali” definisco \do#1{…} in modo che faccia quello che voglio e chiamo \dospecials. È usato dappertutto in questo senso, fin dal formato plain TeX. Sono vent’anni che uso e vedo usare \do in questo modo, e non mi è mai andato a remengo niente; finito di usarlo, diligentemente lo rilascio:`\let \do = \@undefined`(lo fa anche letteracdp.cls, alla fine del file). Direi che in vent’anni dovrebbe ben essermi capitato di rompere qualcosa!
Ciao.
—
GustavoPuò darsi che l’aver ridefinito \do non ti abbia mai prodotto nessun problema fino ad oggi; a a me risulta che serva attraverso \dospecials per cambiare il codice di categoria ai 10 caratteri speciali in modo da poter comporre verbatim. Se nelle lettere non usi mai i due ambienti verbatim e non usi mai i due comandi \verb( due perché sono con e senza asterisco) non succede niente.
Ma è sempre pericoloso dare della altre definizioni ai comandi interni; sei relativamente al sicuro se lo fai dentro un gruppo usando \def o \edef, ma non \gdef o \xdef; sei sicuramente al sicuro se definisci dei comandi con dei nomi che appartengano ad uno “space-name” sicuramente unico al tuo pacchetto; il fatto che tu renda \do undefined alla fine del pacchetto non consola per niente, perché se un danno potenziale c’era, il danno resta.
Padronissimo di non credermi; quindi sei liberissimo di mantenere le cose come stanno; il pacchetto è tuo e ne sei responsabile tu.
Io se qualcuno mi facesse notare un errore che io ho fatto ma che non mi ha mai prodotto inconvenienti, sarei molto contento, non risentito, come mi pare di capire dalle tue parole. Se sono io che ho equivocato, ti chiedo scusa in anticipo.
-
14 Febbraio 2015 alle 11:00 #100230::
letteracdp” post=99956il mio scopo era solo quello di dare l’idea generale.
Lo avevo intuito.
letteracdp” post=99956ChiaramentePerò, non è che uno deve caricare pacchetti solo per dimostrare di essere à la page 😉 ; ogni pacchetto ha le sue specifiche ragioni per venire utilizzato. È ancora lecito usare il LaTeX puro e semplice, se basta per quello che si deve fare.
Concordo. 🙂
letteracdp” post=99956
[…]
Le cose importanti, quindi, sono le seguenti: 1) l’utente deve poter includere il nome dei loghi dal file .tex, non tramite un file apposito di definizione (altrimenti diventa troppo complicato)[…]
Qui abbiamo detto che volevamo definire delle classi personalizzate per la nostra carta intestata: non è affatto necessario fare così. Leggi la documentazione.
Non sarà affatto necessario, ma sarebbe meglio. Il “sarebbe meglio” dipende soprattutto dalla tua volontà di rendere fruibile al maggior numero di persone il tuo progetto. Capisco che qui il problema era della classe personalizzabile, ma se è venuta fuori questa richiesta, non credi altre persone potrebbero avere la stessa necessità? Quindi, anziché andare a creare n classi per n personalizzazioni, sarebbe molto più semplice fornire uno strumento per cui l’utente, nel file .tex possa effettuare queste personalizzazioni. E dico questo perché la stragrande maggioranza delle persone pensa che LaTeX sia complicato di suo, figuriamoci utilizzarlo se per inserire due loghi si devono creare una classe…
Ovviamente il mio è soltanto un suggerimento. Ribadisco quello che ha detto OldClaudio: il pacchetto è il tuo, ne sei responsabile e legittimamente puoi decidere cosa includere e cosa no. Mi spiace se il mio tono nel precedente messaggio è sembrato supponente. In realtà, credo molto nel feedback di altri autori e degli utenti, per questo mi sono permesso di dare quelle valutazioni, non certo per essere à la page. Mi è capitato diverse volte di migliorare in modo sostanziale le potenzialità di un mio pacchetto in questo modo. Per esempio, l’introduzione di chiavi apposite per definire gli offset in hf-tikz è avvenuta grazie a una domanda e relative discussioni su TeX.SX.
Ciao
Claudio
-
14 Febbraio 2015 alle 21:01 #100231::
OldClaudio” post=99960[…]
Io se qualcuno mi facesse notare un errore che io ho fatto ma che non mi ha mai prodotto inconvenienti, sarei molto contento, non risentito, come mi pare di capire dalle tue parole. Se sono io che ho equivocato, ti chiedo scusa in anticipo.Ma no, ma no, Claudio, assolutamente nessun risentimento e nemmeno l’ombra dello stesso, te lo giuro! Ora rileggo la mia risposta, ed effettivamente mi accorgo che può anche apparire brusca; ma ti assicuro che il fatto che tu in persona ti interessi delle mie bagatelle e vada a esaminarne il codice è per me un grandissimo onore che mi fa non contento, ma arcicontento (ed è ancora dir poco). Sia chiaro che ciò che intendo dire è che qualunque segnalazione di errore, da chiunque provenga, è, ovviamente, graditissima, ma che se poi proviene addirittura da te, è persino un onore. Spero di essere riuscito a spiegarmi.
Il fatto è che se qualcuno vuol mettersi alla ricerca di codice deprecabile nel C.D.P. Bundle, non ha che l’imbarazzo della scelta: come dico nella sezione introduttiva della documentazione, si tratta di codice “fossile” che andrebbe completamente riscritto da cima a fondo, cosa che non riesco mai a trovare il tempo di fare. Questa consapevolezza mi rende ansioso di rassicurare circa il fatto che, almeno, è codice collaudato e…, be’, che non contiene ridefinizioni di \hbox, ecco! 🙂
Ci tengo però a scusarmi espressamente per la ruvidità della risposta che ho dato: si sa che in un Internet forum questo non va fatto, perché può generare malintesi, e chi lo fa, come ho fatto io, è per ciò stesso in errore, indipendentemente dall’innocenza delle sue intenzioni.
OldClaudio” post=99960[…]
Può darsi che l’aver ridefinito \do non ti abbia mai prodotto nessun problema fino ad oggi; a a me risulta che serva attraverso \dospecials per cambiare il codice di categoria ai 10 caratteri speciali in modo da poter comporre verbatim. Se nelle lettere non usi mai i due ambienti verbatim e non usi mai i due comandi \verb( due perché sono con e senza asterisco) non succede niente.
[…]No, per la verità l’ambiente verbatim e i comandi \verb si possono utilizzare con assoluta tranquillità, così come, secondo le mie conoscenze, tutto il resto. Ripeto: non è che il nucleo del LaTeX definisca \do (al contrario, come spiegherò meglio appena ne avrò il tempo, il nucleo del LaTeX lascia \do indefinito nel preambolo, salvo porlo uguale a \noexpand come parte del \begin{document}, vedi ltfiles.dtx alla linea di codice 59 e relativo commento esplicativo); il nucleo del LaTeX, e un sacco di altri componenti, usano \do come comando nel quale memorizzare una “azione temporanea” da eseguire sugli elementi di una «\do-list», un concetto generale del quale la lista \dospecials è il principale, ma non unico, esempio.
Comunque, la tua osservazione sul mio uso/abuso di \do è stata in realtà utilissima, perché mi ha fatto riflettere su alcuni aspetti sui quali non mi ero mai soffermato con la dovuta attenzione. Ora, mi pare di accorgermi che, forse, su questo specificissimo argomento (sia chiaro: su questo specificissimo argomento) so un paio di cose che, ripeto forse, potrei utilmente raccontare agli altri. Ma siamo già ufficialmente candidati al «premio off-topic» del mese di febbraio 2015 :smile:, e io ho tre pacchi di compiti che devono essere corretti, per cui direi di riparlarne con un po’ più di calma su un filone di discussione appositamente aperto allo scopo.
Colgo l’occasione per rispondere anche @cfiandra: temo di non riuscire a cogliere il punto. Come spiego nella documentazione, gli ambienti customletterhead e customletterfoot (e in realtà c’è anche customletterlogo, che per ora ho tenuto nascosto :smile:) possono essere usati direttamente nel file .tex, sia in linea, sia leggendolo con un normale \input da un altro file .tex; in entrambi i casi, possono essere usati sia globalmente, sia localmente a un ambiente letterhead (o foldedletterhead) per cambiare la carta intestata di una singola lettera. Chiaramente, se uno si è creato n carte intestate, gli converrà salvarne la relativa definizione da qualche parte :smile:, ma non è affatto necessario creare una classe (anzi, una coppia di classi!) per ciascun modello di carta intestata: lo si fa se si ha voglia di farlo, altrimenti si fa a meno ed è assolutamente lo stesso.
Mi spiego meglio: per restare all’esempio della carta con le tartarughe, tutto quello che ho detto di scrivere nel file tartarughe.def può invece essere collocato in un “normale” file tartarughe.tex, naturalmente cambiando i \RequirePackage in \usepackage ed eliminando eventuali @ dai nomi delle macro. Poi uno scrive:
`
\documentclass[]{letteracdp}
\usepackage[T1]{fontenc}
…
\usepackage[customletterhead]{cdpaddon}
…
\input{tartarughe} % .tex
…
\begin{document}
\begin{letterhead}[…]{…}[…]
\opening{Caro…}ecc. ecc.
\end{letterhead}
\end{document}
`Scusami anche tu per la frecciatina su «à la page»: ma anche «negli ultimi vent’anni è successo qualcosa» era una frecciatina… 😉 Comunque, è pura verità che devo assolutamente rimettermi a studiare per riportarmi à la page, dopo uno iato durato parecchi anni.
Ciao.
—
Gustavo
-
14 Febbraio 2015 alle 22:45 #100232::
Mi sono accorto di una mia distrazione / ingenuità: nel file letteratarta.cls, ovviamente, invece di
`
\NeedsTeXFormat{LaTeX2e}\relax % LaTeX2e is required!
\ProvidesClass{letteratarta}
[2015/02/12 v0.01 (development)]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{letteracdp}}
\ProcessOptions\relax
\LoadClass{letteracdp}[2015/02/08]
\input{tartarughe.def}
\endinput
`
è più semplice, e quindi meglio, scrivere
`
\NeedsTeXFormat{LaTeX2e}\relax % LaTeX2e is required!
\ProvidesClass{letteratarta}
[2015/02/15 v0.02 (development)]
\LoadClassWithOptions{letteracdp}[2015/02/08]
\input{tartarughe.def}
\endinput
`
Analogamente per il file articoletteratarta.cls.Scusate la svista. Ciao.
—
Gustavo
-
16 Febbraio 2015 alle 14:45 #100233::
Ovviamente non posso che ringraziare tutti per il preziosissimo contributo 🙂
Comunque davvero grazie per il supporto..:-)
Alessandro.ps non era manco nell’ultimo dei miei pensieri innescare una serie di post così lunghi.Sono però assai contento se si sono tratti spunti per approfondire,capire e correggere (o ritoccare) quanto ci è stato messo a disposizione.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.