Risposte nei forum create
-
AutoreRisposte
-
15 Giugno 2011 alle 11:47 in risposta a: Elenco puntato spezzato che va automaticamente su nuova pag #60008::
Sì c’è, basta che tu esamini la infinita lista di pacchetti già installati sul tuo hardisk, almeno se hai una installazione comopleta del sistema TeX; ti suggerisco solo di esaminare quelli il cui nome comincia con la lettera “e”.Non ti dico altro, perché non sarebbe una buona scelta quella di scrivere un rapporto di tipo scientifico (non un abecedario per la prima elementare) con un corpo normale di corpo superiore a 12pt;
Il tuo preambolo poi dimostra il tentativo di imitare Word, senza in realtà saper quello che puoi fare per impostare la pagina; anche con Word puoi comporre bene se sai usare cose, come Visual Basic, che servono per scrivere le macro per Word. Ma con Word puoi semplicemente usare il mouse e fare gli errori più grandii se non hai nessuna competenza di tipografia; e il tuo preambolo denota che questa competenza ti manca. Non te la prendere: mancava anche a me quando ho cominciato a usare LaTeX, quindi non ti dico queste cose per offenderti o umiliarti, ci mancherebbe altro!
Quello che sto dicendoti sono solo consigli per leggere delle buone guide, come quella di Pantieri-Gordini, L’arte di scrivere con LaTeX, il cui link è in testa a questa pagina, e di fare attenzione ai molti consigli che vengono dati in questo forum; sono sistematicamente consigli che cercano di evitare di usare LaTeX come un word processor WYSIWYG (what you see is what you get) come sono MS Word, OOo Writer, Libre/Writer, eccetera. LaTeX non è un word processor ma un text processor, testo nel senso più generale di testo composto tipograficamente, non semplicemente (si fa per dire) di parole messe in fila per esprimere il proprio pensiero.
::
Se compili con pdftex (il che è probabile) i comandi sono descritti nel manuale di pdftex:
da terminale dà il comandotexdoc pdftex
I comandi di pdftex sono comandi “primitivi’ non presentii fra i comandi “primitivi” di tex, quindi che tu usi plain piuttosto che latex, quei comandi sono sempre lì a disposizione: \pdfpagewidth e \pdfpageheight, che ovviamente non sono da confondere con i comandi \paperwidth e \paperheight delle classi LaTeX.
ma davvero vuoi scrivere qualcosa in plain tex? Mi vengono i brividi!
Conoscere i comandi di basso livello e saperli usare bene è essenziale per poter scrivere buone macro, corrette ed efficienti, ma comporre documenti in plain è, secondo me — s’intende –, piuttosto masochistico. Con Latex puoi fare tutto quello che puoi fare con plain, in modo più facile, e in più puoi fare tante altre belle cose già predisposte da una miriade di pacchetti, più quelle belle cose che puoi ottenere con le tue macro create con i comandi di basso livello. Attento: non sto denigrando il linguaggio primitivo di TeX e/o le macro contenute in plai; sto semplicemente commentando sul voler comporre documenti mediante plain. Per usare una metafora, usare LaTeX è come fare un viaggio con una bella e comoda berlina; usare plain vuol dire fare lo stesso viaggio con un trattore che rimorchia un carro contenente una officina, cosicché ad ogni attraversamento, ad ogni fiume, ad ogni villaggio attraversato il trattorista si possa costruire il ponte di barche, la piattaforma di attraversamento, la circonvallazione del villaggio, eccetera. 😀Se però ci tieni, ricordati che oltre a TeXbook devi studiarti anche le estensioni aggiunte con pdftex e quelle (ora incorporate in pdftex) di e-TeX (Texdoc etex). Come vedi spesso in questo forum, molte delle magie, che Enrico propone per risolvere i problemi insoliti posti da alcuni frequentatori del forum, ricorrono spessissimo a comandi misteriosi che trovi spiegati nel manuale di pdftex o in quello di etex.
::
Adesso che ci sei quasi, leggiti la documentazione di long table dando dalla finsetra comandi (console, terminal,…) il comandotexdoc longtable
Vedrai che esiste un descrittore opzionale per collocare la tabella in modo centrato o allineato a destra o a sinistra, e che l’ambiente center,(che aggiunge ulteriore spazio sopra e sotto all’oggetto centrato) non si deve usare.
Piuttosto, se sai fare le somme, 1.5\columnwith più le larghezze delle altre colonne è sicuramente maggiore di \columnwidth; giusto?
Ora se stati componendo a due colonne \columnwidth è leggermente minore di \textwidth; se stai componendo a una colonna, \columnwidth è uguale a \textwidth. Siccome la tua tabella è larga oltre che lunga, dubito che tu stia componendo a due colonne, dubito anche che longtable si possa usare a due colonne, ma non ho verificato sulla documentazione. In ogni caso se la larghezza naturale delle celle senza usare la colonna p era troppo grande e la tabella sforava, certamente allargando la cella di destra ad essere una volta e mezzo lo spazio totale disponibile, la tabella è certamente troppo larga, tropo, troppo, troppo larga per costruzione.
Per far stare la tabella dentro alla pagina, hai diverse possibilità, oltre a togliere l’ambiente center:
1) lascia la colonna l senza cambiarla in p,racchiudi tutto l’ambiente dentro un gruppo e prima di \begin{longtable} specifichi il corpo del tuo font con \small o \footnotesize (ovviamente meglio il primo e la larghezza della tabella dovrebbe ridursi del 10%; con \footnotesize ti diminuisce del 20%)
2) lascia la colonna p ma specifica un coefficiente minore di 1 a \columwidth; se il nome della nazione è così lungo andrà a capo. visto che si tratta dell’ultima colonna a destra può darsi che tu debba specificare \tabularnewline al posto di \\ a fine riga.
3) se ti manca poco, una manciatina millimetri, per far stare la tabella dentro la giustezza della pagina, modifica, prima di longtable e sempre dentro a un gruppo, il valore di \tabcolsep, per esempio impostandolo a 3pt (il valore di default in genere va da 6pt a 8pt). Ricorda che 3pt equivalgono a 1mm (circa) e che questo spazio, \taboclsep è metà dello spazio intercolonna, quindi di fatto, se imposti \tabcolsep=3pt, le colonne sono separate da un minimo di 6pt, circa 2mm; per una tabella come la tua uno spazio di separazione minore di quello di default non è fuori luogo; non dico che sia preferibile, ma ci sta. Se hai 4 colonne, come nel tuo caso, ridurre \tabcolsep da 6pt a 3pt, vuol dire guadagnare 8mm circa sull’intera larghezza della tabella.
Infine, se avrai letto la documentazione di longtable, avrai anche capito che la sistemazione definitiva della longtable per quanto riguarda la posizione della didascalia e dei filetti avviene dopo almeno due compilazioni, talvolta tre; a me è successo di arrivare fino a quattro.
14 Giugno 2011 alle 11:54 in risposta a: come ritagliare un’immagine in includegraphics con xelatex #59953::
\special è un comando per inserire nel file di uscita comandi speciali per il “driver” che rende visibile/stampabile il file di uscita e serve quindi per inserire nel file di uscita cose scritte nel linguaggio del driver.Però volendo, forse, si potrebbe fare in un colpo solo la compilazione Xellatex e lo scontornamento; basta dire a Xelatex di lanciare il programma esterno pdfcorp sul file dell’immagine e poi rinominare l’immagine col nome volute perché \includegraphics la includa; per esempio se tu dovessi scontornare il file figura.pdf potreti provare a fare così:
`
\begin{figure}
\immediate\write18{mv figura.pdf ./figura-old.pdf}
\immediate\write18{pdfcrop figura-old.pdf figura.pdf}
\centering
\includegraphics[width=…]{figura}
\caption[..]{…}
\label{…}
\end{figure}
`Per altro puoi dare il comando da terminale pdfcrop –help e vedere che cosa poi fare di più con quello script perl.
Questo modo di procedere può funzionare, e dovrebbe funzionare senz’altro se fra le opzioni per lanciare xelatex hai inserito anche –shell-escape e se la tua versione di Xelatex è sufficientemente recente.Se l’opzione –shell-escape non c’è, tieni presente che la distribuzione TeXLive 2010 ammentte di default un versione limitata di quell’opzione che consente ai compilatori pdftex, xetex e luatex di eseguire alcuni comandi esterni fra cui probabilmente c’è anche pdfcrop questo a sua volta prevede l’opzione –restricted che forse è quella da usare se manc nella stringa di lancio l’opzione non ristretta.
Pdfcrop consente anche di eseguire tutta l’operazione con ghostscript di versione 8.x nel caso che i programma di lancio non sia in grado di determinare il bounding box da solo; quindi con xetex forse dovrebbe essere questa la via da seguire.
nota che ti ho fornito molte informazioni, e ti ho indicato dove approfondire; io generalmente preferisco operare a mano,ma \write18 è molto comodo, quindi se vuoi seguire questa strada bisogna che tu approfondisca meglio. Io non l’ho mai seguita, e non ho voglia di farlo perché, come ho detto, preferisco procedere a mano.
Altra soluzione; visto che non hai problemi a scontornare o a ritagliare una figura con pdftex, creati un file minimi da eseguire con pdftex che ti produca solo la figura voluta e scontornata su un’unica pagina; esiste fra i mille pacchetti di laTeX anche un pacchetto che produce le pagine già scontornate, cioè già su un supporto fisico (virtuale) avente le stesse dimensioni della figura o del contenuto della pagina. usa quel pacchetto e avrai direttamente la figura scontornata o ritagliata.
Capisco che è sempre un modo di operare esterno, anche se metti i comandi di sistema dentro all’argomento di \write18, cambia la forma ma non la sostanza; è sempre un programma esterno che fa il lavoro.
14 Giugno 2011 alle 8:00 in risposta a: come ritagliare un’immagine in includegraphics con xelatex #59950::
xelatex per ora non ha la capacità “clip”; quindi non serve usare né viewport né trim sia con lopzione clio sia con il comando asteriscato.Devi scontronare prima con una cosa come pdfcrop oppure lavorando con software grafici che, all’occorrenza, non facciano perdere la natura vettoriale alle immagini.
Per esempio se hai da scontornare una immagine in formato eps, NON usare il programma Gimp; esso è in grado di aprire il formato eps, ma non è in grado di salvare in quel formato, ma salva solo in uno dei tanti formati a matrici di pixel, perdendo così la natura vettoriale del disegno. Certo se l’immagine era una fotografia in formato eps (raro ma non impossibile) allora anche Gimp va bene. Ma se era un disegno al tratto riesci ad inserire il tuo disegno in modo decente sole se mantieni una densità di pixel al pollice enorme, altrimenti l’immagine può sgranarsi ad un punto tale da diventare indecente.
Per ora, quindi, se proprio devi usare Xelatex, devi procedere manualmente.
::
Ho messo un po’ di pacchetti a buon senso e questo è il meglio (si fa per dire) che sono riuscito ad ottenere.
`
\documentclass{book}
\usepackage{tikz}
\usepackage{circuitikz}
\usepackage{subfig}
\usepackage{booktabs}
\usepackage{array}\begin{document}
\begin{table}
\centering
\begin{tabular}{*2{m{0.30\textwidth}m{0.15\textwidth}}}
\begin{tabular}{ccc}
\toprule
A&B&$A\ B$\\
\midrule
0&0&0\\
1&0&0\\
0&1&0\\
1&1&1\\
\bottomrule %\\
\end{tabular}
&
\begin{circuitikz} \draw
(0,0) node[and port] {}
;\end{circuitikz}
&
\begin{tabular}{ccc}
\toprule
A&B&$A\overline{\wedge} B$\\
\midrule
0&0&1\\
1&0&1\\
0&1&1\\
1&1&0\\
\bottomrule %\\
\end{tabular}
&
\begin{circuitikz} \draw
(0,0) node[nand port] {}
;\end{circuitikz}
\\
& \multicolumn{1}{l}{AND}&&\multicolumn{1}{l}{NAND}
\\[2ex]
\begin{tabular}{ccc}
\toprule
A&B&$A+ B$\\
\midrule
0&0&0\\
1&0&1\\
0&1&1\\
1&1&1\\
\bottomrule %\\
\end{tabular}
&
\begin{circuitikz} \draw
(0,0) node[or port] {}
;\end{circuitikz}
&
\begin{tabular}{ccc}
\toprule
A&B&$A\overline{\vee} B$\\
\midrule
0&0&1\\
1&0&0\\
0&1&0\\
1&1&0\\
\bottomrule %\\
\end{tabular}
&
\begin{circuitikz} \draw
(0,0) node[nor port] {}
;\end{circuitikz}
\\
& \multicolumn{1}{l}{OR}&&\multicolumn{1}{l}{NOR}
\\[2ex]
\begin{tabular}{ccc}
\toprule
A&B&$A XOR B$\\
\midrule
0&0&0\\
1&0&1\\
0&1&1\\
1&1&0\\
\bottomrule %\\
\end{tabular}
&
\begin{circuitikz} \draw
(0,0) node[xor port] {}
;\end{circuitikz}
&
\begin{tabular}{ccc}
\toprule
A&B&$A\overline{XOR} B$\\
\midrule
0&0&1\\
1&0&0\\
0&1&0\\
1&1&1\\
\bottomrule %\\
\end{tabular}
&
\begin{circuitikz} \draw
(0,0) node[xnor port] {}
;\end{circuitikz}
\\
& \multicolumn{1}{l}{XOR}&&\multicolumn{1}{l}{XNOR}
\\[2ex]
\begin{tabular}{cc}
\toprule
A&$\overline{A}$\\
\midrule
0&1\\
1&0\\
\bottomrule %\\
\end{tabular}
&
\begin{circuitikz} \draw
(0,0) node[not port] {}
;\end{circuitikz}
\\
& \multicolumn{1}{l}{NOT}
\\
\end{tabular}
\caption{Porte logiche}
\end{table}\end{document}
`Non sono riuscito a replicare i comandi dei segni logici, ma tu saprai certamente quali pacchetti hai usato e saprai come ripristinarli.
Certo che mettere sette oggetti in colonne non è facile e centrare l’ultima porta nota rispetto alle altre messe in due colonne sbilancia tutto; in ogni caso erano orrendi i nomi delle porte messi a metà tra la tabella e il disegno.
Il tutto resta abbastanza brutto, ma in effetti è un filino meno indecente del tuo.
::
Be’, per l’ambiente picture non hai problemi perché fa parte integrale di LaTeX.Se disgraziatamente hai MiKTeX, devi usare il Wizard (Avvia|MiKTeX|2.9|Package…) e con quello potresti riuscire a scaricare i pacchetti.
Ma la soluzione migliore è sempre quella di caricare la distribuzione del sistema TeX mediante la distribuzione TeX Live, di cui si parla sempre sul forum, e di caricarla completa, mai caricare, nemmeno con MiKTeX la versione basic.Se poi non ti piace il sistema TeX, disinstallare quasi di GiB di file oppure una versione basic da 0.5GiB è qualsi la stessa cosa e il risultato è il medesimo; ma almeno con la versione completa uno non si prende il mal di pancia per scoprire come si fa a installare i pacchetti mancanti.
::
Non l’ho mai provato, ma esamina questo link
http://www.dsi.uniroma1.it/~bongio/TexDraw/TexDraw.html`però stati attento; le classi java con cui il programmino è scritto risalgono al 1997, quindi non ti permette di sfruttare i comandi resi disponibili dall’evoluzione di LaTeX; dopo averi inviato il messaggio ho scaricato l’applicazione java; ho avuto i miei problemi a capire come lanciarlo, alla fine ci sono riuscito (da linea di comando: java TeXDraw) ma i disegnini che si possono fare sono rudimentali; in particolare mancano le curve di Bézier, quindi devi limitarti a spezzate con pendenze discrete; in sostanza se vuoi l’interfaccia grafica devi accontentarti di disegnini da asilo.
In realtà (pdf)latex dispone di una semplice ambiente che si chiama picture, estensibile (lo raccomando) con il pacchetto pict2e; la documentazione di pict2e, già presente sul tuo hard disk, (texdoc pict2e) ammonta lala favolosa lunghezza di una decina di pagina e contiene abbastanza esempi per poter cominciare a disegnare; ovviamente per fare dei bei disegi, bisogna imparare bene bene, e questo richiede un po’ di pratica, ma poi è come andare in bicicletta, non si dimentica più.
Più elaborato è il pacchetto tikz; il manuale è un bel mattone di 700 pagine, ma è consultabile andando avanti e indietro, e non è necessario leggerselo tutto prima di cominciare a disegnare; l’introduzione generalmente è sufficiente. La documentazione, gia presente sul tuo disco fisso, è consultabile con texdoc tikz. I disegni che si possono fare con TiKZ sono di alta classe e possono essere considerati professionali, una volta che oltre al software eccellente, c’è dietro una persona di gusto che sappia disegnare bene.Picture e tiks non hanno interfaccia grafica.
Recentemente su questo sito sono stati indicati altri programmi che hanno anche l’interfaccia grafica; purtroppo non so dirti granché, perché mi sono abituato al disegno programmato e non uso nessuna interfaccia grafica. Non ne nego l’efficacia, però; probabilmente sono io che dovrei aggiornarmi.
::
In teoria si potrebbe fare anche senza script.
Se si dovesse compilare il file documento.tex sarebbe forse possibile dare da linea di comando cose come
`
latex \usepackage{mypackage} \input{documento}
`
ma è una strada ricca di insidie e di limitazioni.
Benché sul manuale di Lamport ci sia scritto che è vietato mettere qualunque cosa prima della riga \documentclass, tranne l’ambiente “filecontents”, in realtà è possibile mettere qualche cosa prima di \documentclass, non so se \usepackage con il suo argomento sia una di queste cose, non l’ho mai provato. Tuttavia, sì è possibile mettere qualcosa prima di \documentclass, e in particolare prima di eseguire l’inpute del documento.Tuttavia in questo modo non si possono cambiare le opzioni ai pacchetti, perché risulterebbe un errore (fatale) di option clash. Quindi segui il consiglio di robitex; elaborare il file da comporre con uno script adeguato prima di darlo in pasto a (pdf)latex è l’unica via sicura per raggiungere lo scopo senza problemei: in pratica si corregge il file da comporre e (pdf)latex vede solo un bel file in codice latex bene composto e senza possibilità di errori (se lo script è fatto bene) per la presenza di doppie chiamate o di opzioni in contrasto.
-
AutoreRisposte