Risposte nei forum create
-
AutoreRisposte
-
::
Siccome non uso più Windows da circa 9 anni, i miei ricordi sono fumosi, ma non del tutto assenti.Con Windows hai una ulteriore possibilità, che gli utenti di Linux e Mac usano abbastanza spesso con i loro script bash e simili. Ma anche Windows dispone da sempre, dai tempi del vecchio DOS, di un linguaggio di scripting che si chiama batch; se apri il prompt dei comandi e ci scrivi dentro il comando help e lo esegui, ti vene l”elenco di tutti i comandi che puoi usare con questo linguaggio.
Se crei un file nomenclatura.bat e lo salvi in una cartella che Windows abbia sul suo percorso di ricerca (nel prompt dei comandi esegui il comando path e sullo schermo ti appare tutta la lista delle cartelle che Windows esamina per cercare i file eseguibili; l’elenco è una sola stringa dove i vari percorsi sono separati da un punto e virgola — all’occorrenza puoi aggiungere altri percorsi eseguendo quanto indicato nell’apposita finestra di configurazione del sistema che poi vedere con il pannello comandi) puoi eseguirlo come se fosse un comando di sistema. Queste sono cose che da quando esiste Windows e le icone da cliccare si sono perse nell’uso comune degli utenti; è un peccato, perché con quei comandi si possono fare cose inimmaginabili con il mouse e le icone.
Allora apri un editor ASCII, come il tuto shell editor che usi abitualmente per i sorgenti latex, ci scrivi dentro la riga che si trova alla fine della pagina 2 della documentazione di nomenclature nella forma seguente:
`makeindex %1.nlo -s nomencl.ist -o %1.nls`e lo salvi con il nome suddetto: nomenclatura.bat; il nome lo puoi cambiare a tuo piacimento, ma l’estensione .bat la devi conservare. Il simbolo %1 indica simbolicamente il primo argomento che usi dopo il nome del comando (un po come #1 nelle macro di latex).Salvato il file, quando vuoi elaborare la nomenclatura del documento myfile.tex, nel quale hai inserito e usato tutti ci comandi descritti nella documentazione di nomenclature prima della indicazione di quella riga magica, apri il prompt dei comandi, e ci scrivi dentro`nomenclatura myfile`ed esegui il comando premendo il tasto
. Dopo un breve istante nella finestra riappare il prompt per accettare un altro comando, ma a quel punto il file myfile.nls esiste già e puoi proseguire con l’ulteriore compilazione del tuo file sorgente per avere la documentazione compost. Questa via attraverso la procedura batch è leggermente più scomoda rispetto a quella di cliccare una icona nella barra del tuo shell editor, ma è decisamente più comoda rispetto a quella di scrivere ogni volta a mano l’intero comando nella finestra comandi, se non altro perché non commetti errori nello scrivere il comando batch con tutte le varie opzioni scritte correttamente.
Questa è una via di mezzo fra lo scrivere tutto quanto a mano e configurare lo shell editor per faccia tutto da solo; certo la soluzione più rapida sarebbe quella di usare imakeidx o indextools, ma direi che sia un ragionevole compromesso.
Ricorda che tutto il sistema TeX è nato come un sistema batch e prima che fosse messo in circolazione Win95 (il precedente Windows 3 era perennemente in crash e totalmente inaffidabile) e prima che uscisse il primo shell editor per Windows era l’unico modo che avevamo noi vecchi utenti per usare il sistema TeX. Tieni presente che ho creato le 944 polizze di font greci disponevo solo di DOS e sono andato avanti a suon di comandi batch; se non ci fossero state queste funzionalità invece di tre anni (solo week-end e feste e vacanze comandate), me ne sarebbero occorsi almeno 30:shock: Non lo rifarei più oggi, ma disegnare font, sia pure con i sistemi batch di allora, è una attività che ti cattura e non smetteresti più.
::
Bè quando clicchi sul bottone del tuo shell editor, lui fa andare makeindex con i comandi giusti per fare il solito indice analitico per il quale è nato. Il glossario o la nomenclatura è un indice analitico un po’ diverso e per non confondere le carte in tavola si usano estensioni diverse e file di stile diversi rispetto a quelli che si usano per gli indici analitici.
Se vuoi puoi aggiungere un tasto al tuo shell editor che faccia proprio quello che c’è scritto in quella riga, ma la cosa, se è fattibile, è diversa da editor a editor, quindi tocca a te scoprire se si può fare e come con il tuo shell editor.
Oppure ti crei un pacchettino di impostazioni personali che faccia uso del pacchetto imakeidx o del pacchetto indextools, e configuri il comando \makeidex e/o \pirntindex in modo che facciano quella cosa; in realtà non so se si possa fare, ma credo di sì; imakeidx e indextools lanciano il programma makeindex con le opzioni giuste mentre pdflatex sta lavorando, per cui con una sola esecuzione di pdflatex ottieni il documento composto con gli indici analitici e la nomenclatura già fatti. Prima che esistessero quei pacchetti mi ero definito un paio di comandi che mi permettevano di ottenere il risultato in modo molto artigianale; ho scritto un articolo per ArsTeXnica (che puoi trovare nella sezione di ArsTeXnica di questo sito) diversi anni fa a proposito dell’uso del comando \write18, e indicavo come usare quel comando per ottenere gli indici analitici in modo sincrono; poi Enrico ha creato il pacchetto imakeidx che fa il tutto in modo molto più professionale. Ma quei comandi artigianali sono lì e possono essere adattati all’uso della composizione della nomenclatura.
::
Per le iniziali, oltre a yinit, che non è disponibile in forma vettoriale, ma solo in forma bitmapped, ci sono molti font; Direi che un sito da esplorare sia il FontCatalogue creato dal TUG danese al sitohttp://www.tug.dk/FontCatalogue/
La totalità di quei font sono attivabili caricando gli appositi file .fd, che per le collezioni di iniziali decorative non contengono la specifica della codifica, che resta U (undefined) e quindi il nome del file è dato semplicemente dal nome del font.L’elenco completo di questi file .fd (che per essere caricati con \input richiedono il nome completo di estensione) sono raccolti nella cartella …/tex/latex/initials/ che contiene tante ulteriori cartelle quanti sono i font con le iniziali decorative; pdflatex ne dispone di una cinquantina.
Vale la pena di provarli, anche se i loro nomi sono contenuti anche nel catalogo danese, e ognuno rimanda ad una cartella che contiene non solo un file pdf con un esempio di scrittura che di solito contiene tutte le lettere dell’alfabeto maiuscolo; ma la cartella contiene anche il file .tex con il quale è stato prodotto quell’esempio; quindi si vede anche molto bene come è stato caricato il file .fd.
Si noti che quasi tutti quei font corrispondono alla serie xl (extra large !…) che va esplicitata con i soliti comandi per la scelta della famiglia, della serie e della forma. Ma non è difficile seguire quei modelli.
Io non ne ho usato nessuno in pratica, perché non mi piacciono le iniziali ornate, ma devo ammettere che viste così in una vetrina di esempio, ce ne sono alcune veramente eleganti; altre non mi dicono assolutamente niente; ma siccome i gusti sono gusti, ognuno è libero di usare le iniziali ornate che preferisce; stia solo attento a non esagerare perché le decorazioni riscano di far cadere nel kitsh qualcosa che diversamante sarebbe molto ben fatto.
Quello che eviterei di fare è caricare i font con la sintassi di Plain Tex, come @ricidefix ha trovato in rete; per giunta in un esempio che usa la codifica utf8x, che oggi non si deve più usare. Non è colpa di @ricidefix, ovviamente, ma volevo mettere in guardia i lettori a non seguire quell’esempio.
Ma, se il file .fd non esiste come si fa? Per il font che cercava @ricidefix, yinit il file .fd non esiste, ma crearlo, o semplicemente mettere nel preambolo le uniche due righe interessanti che esso contiene è semplicissimo:`\DeclareFontFamily{U}{Yinit}{}
\DeclareFontShape{U}{Yinitt}{xl}{n}{<48> yinit}{}`(siccome yinit viene creato apposta con METAFONT, ho preferito indicare un solo corpo, ma se il font fosse scalabile al posto di <48> si metterebbe <->, che vuol dire “ingrandisci o rimpicciolisci a piacere).Poi volendo si può definire un comando come \yinitials così:`\newcommand\yinitials{\usefont{U}{yinit}{xl}{n}}` così che viene selezionato proprio quel font e di quel corpo.
Buona ricerca delle iniziali ornate … 🙂
::
Sei sicuro di avere dato il comando makeindex come descritto in fondo alla pagina 2 della documentazione di nomencl?Devi aprire un terminale, una finestra comandi, un prompt dei comandi, un xterm, comunque si chiami nel tuo PC, e dare a mano il comando descritto in quell’ultima riga della pagina 2
::
Che io sappia il campo hyphenation nel database bibliografico serve per impostare \foreignlanguage per comporre il riferimento nella bibliografia, ma non serve a niente per comporre la citazione, che se fosse divisa in sillabe in fin di riga, verrebbe divisa secondo le regole del testo circostante. Quindi il problema non è nella bibliografia, dove eventualmente gli autori sono composti all’inizio della riga, per cui è difficile, ma non impossibile che qualche nome di autore capiti a fine riga; d’altra parte la bibliografia è composta di solito in modo implicito con le impostazioni della dichiarazione sloppy.Per il testo non credo che ci sia niente da fare, ma se mandassi quel particolare record e un esempio minimo compilabile dove appai la tua classe e qualche pacchetto che hai richiamato per impostare lo stile della pagina, si potrebbe vedere come fare.
Gli acronimi non sono niente di strano; in fondo una documentazione tecnica della FIAT (tanto per fare riferimento ad un acronimo che ha cessato di esistere, o quasi — ora è nascosto dentro la sigla FCA), accetta tranquillamente un campo Key col nome fiat, menstre sarebbe assurdo mettere come autore “Fabbrica Italiana Automobili Torino”. Un altro esempio: UNI va benissimo, ma sta per “Ente Italiano di Unificazione”; chiunque userebbe UNI invece del nome per disteso.
::
Si, era solo scritto male il nome dei font yinitas, non è la stessa cosa di yinit.Ma avrei pignolescamante due osservazioni da fare:
1) è , terza persona del verbo essere si scrive con l’accento grave;
2) i font yinit di Yannis Haralambous sono molto belli, ma sono bitmapped, almeno da quello che vedo nel mio TeXLive; li ha presentati al congresso TUG di Cork, mi pare nel 91, e sono stati accolti con un applauso/ovazione a scena aperta. Detto questo, benché siano bellissimi, io userei altri font gotici decorativi vettoriali, facili da scalare senza perdere definizione; ce ne sono e credo di averne mostrati un po’ nella guida GuIT (ripensandoci ho mostrato proprio i font di Yannis…; ma so che ce ne sono degli altri; siccome non ne uso mai, su due piedi non saprei indicartene).
30 Gennaio 2015 alle 9:27 in risposta a: Dove reperire informazioni sul meccanismo delle running head #99964::
Alessandro, h scritto su ArsTeXnica un articolo intitolato I mark, questi sconosciuti. Credo che faccia al caso tuo. Lo puoi scaricare liberamente dalla sezione ArsTeXnica di questo forum; lo devi cercare nelle varie annate, perché non mi ricordo più in quale annata l’ho scritto; ma è una ricerca facile, te la sbrighi i poche decine di secondi.Anche la documentazione di fancyhdr dice qualcosa, ma non scende in troppi dettagli; se uno conosce il meccanismo, allora capisce anche meglio che cosa fa fancyhdr. Quell’articolo cerca di spiegare il meccanismo.
::
Visto che usi il descrittore > e il descrittore m, hai caricato anche il pacchetto array; quindi puoi definire un nuovo tipo di colonna, per esempio:`\newcolumntype{M}[1]{>{\centering}m{#1}}` in modo da evitare quella pappardella di simboli nella descrizione delle colonne; potrai infatti scrivere`\begin{tabular}{*3{M{2cm}}M{3cm}*2{M{2cm}}}`evitando i filetti verticali.
Poitogli tutti gli \hline perché i filetti rizzontali dopo ogni riga non sono professionali. Usa il pacchetto booktabs per mettere solo un filetto spesso \toprule, sopra la tabella, uno sottile \midrule sotto alla riga delle intestazioni, un filetto spesso \bottomrule sotto l’intera tabella.
Togli il codice di posizionamento [h] dall’ambiente table; lasciandolo avrai sicuramante die problemi di posizionamento, oppure mettici almeno un altro codice, per esempio [ht].
Togli \normalsize alla fine dell’ambiente table; mettici invece un didascalia con un \label a cui tu possa fare riferimento con cose del tipo “… nella tabella~\ref{tab:lamiatabella} si vede che…’, e non con espressioni del tipo “… nella seguente tabella si vede che…”. Le tabelle sono grandi e quindi vanno messe dove c’è posto, non lì e assolutamente lì; se proprio la vuoi lì e non altrove (poco professionale) non mettere l’ambiente tabular dentro un ambiente mobile come table.
Poi veniamo al puntum dolens: l’ultima cella di ogni riga non va terminata con \\ ma con \tabularnewline; ci sono altri modi, ma questo è standard. Dipende dal fatto che in quella posizione il comando \\ è ambiguo e LaTeX non sa come interpretarlo. \tabularnewline invece non è ambiguo.Siccome nel comporre la tabella hai commesso tutti i possibili errori, perché non leggi con attenzione la guida L’Arte di scrivere con LaTeX, che puoi scaricare liberamente dalla sezione Documentazione di questo forum? C’è un capitolo dedicato alle tabelle.
::
Nella citazione eseguita nel corpo del testo e nell’elenco bibliografico?Se è nel corpo del testo, componi quel capoverso dentro l’ambiente sloppypar; se ti viene un capoverso troppo aperto, con spazi interparola troppo grandi cambia la bibliografie e invece del nome dell’azienda metti un campo KEY con un acronimo, un qualcosa di corto che però rimanga anche nell’elenco bibliografico, eventualmente sviluppando l’acronimo nel campo NOTE.
::
La soluzione si divide in due parti:
1) usare la codifica adatta che per pdftex potrebbe essere ISO Latin 1
2) definire le lettere accentate come caratteri attivi e definirli in modo che eseguano i comandi primitivi di TeX per gli accenti.La cosa difficile è quella di assegnare un codice 13 (attivo) a caratteri NON ascii, e definirli con le definizioni giuste con i codici esadecimali a doppio circonflesso. Delizie del linguaggio primitivo TeX.
Ringrazio Maurizio che mi ha inviato privatamente l’estratto di un suo file scritto in Plain TeX, così che io potessi sperimentare direttamente su un file “incriminato”.
Per i curiosi il codice è il seguente:`\language=59 %selezione dell'italiano
% Attivazione delle lettere accentate
\catcode224=13 \def^^e0{\`a}% à
\catcode232=13 \def^^e8{\`e}% é
\catcode233=13 \def^^e9{\'e}% é
\catcode236=13 \def^^ec{\`\i{}}% ì
\catcode242=13 \def^^f2{\`o}% ò
\catcode249=13 \def^^f9{\`u}% ù`
29 Gennaio 2015 alle 9:15 in risposta a: [RISOLTO] letteracdp + fancyhdr: perchè non funziona? #99762::
Hom letto la documentazione, ma sostanzialmente si tratta di una reimplementazione della classe standard letter con le modifiche necessarie per soddisfare le norme svizzere per carta e buste; il layout è configurabile, ma direi che sia piuttosto difficile farci stare anche le testatine e i piedini con fancyhdr come vorresti fare tu.Il fatto che sia compilabile anche con lualatex non mi sembra una cosa straordinaria; anche una lettera composta con la classe standard letter è compilabile sia pdflatex, xelatex, lualatex; l’uso di polyglossia e di fontspec per scegliere le lingue e per specificare i font opentype da usare è una piccola aggiunta, che oggi la maggior parte delle classi non standard offre; le classi standard non specificano niente in proposito, quindiuo è libero di usare babel o polyglossia, \usepackage[…]{fontenc}+\usepackage[…]{inpuntenc}+\usepackage{} oppure \usepackage{fontspec}+\setmainfont{…}+\setsansfont{…}+\setmonofont{…} è del tutto libero come èe libera la scelta del motore di composizione; quindi 🙂
Continuo a pensare che la soluzione che ti ho invitato a studiare, di adattare la classe article al tuo scopo, come ho fatto io per la mia carta intestata, sia la strada più semplice, decisamente molto più semplice; non ti mando un esemplare della mia classe, perché il logo nella prima pagina è scritto in verticale su tutto il margine sinistro usando marchio e logotipo prescritti dal mio ateneo con font particolari e con un colore particolare. Quindi “difficilmente” adattabile all’uso nelle testatine e nei piedini della prima pagine e in modo diverso nelle testatine e nei piedini della pagine successive.
Però questa soluzione impegna un 200 righe di codice, commenti compresi, molto semplice e spartana come comandi disponibili per il markup, ma facili da ricordare (una decina in tutto a voler esagerare) per cui non ha nemmeno bisogno di scriverti un manuale d’uso, visto che avendola scritta ti ricordi tutto quanto.
Ti consiglio di non cercare più le cose già fatte per classi configurabili o predisposte da altri per scopi diversi; costruisciti la tua classe e ci metterai molto meno del tempo che hai già consumato per cercare in giro, e hai la possibilità di imparare moltissimo in termini di LaTeX, cosi da saper poi fare da solo anche tante altre cose che nulla hanno a che fare con le lettere. Non perdere questa occasione!:wink:
Se cerchi il mio indirizzo di posta elettronica negli articoli che ho scritto per ArsTeXnica (qui sopra nell’archivio) e mi mandi un messaggio, ti spedisco il file poli-lett.cls con un esempio d’uso; ovviamente dovresti farci molte modifiche per adattarlo alle tue esigenze; è per questo che sarei restio a dartelo; ma poi ho pensato che vedere come si fanno le cose con semplicità, eppure con molti aspetti pratici che mancano sia nella classe lettere sia nella classe letteracpd, ma forse presenti in scrlttr2, certamente presenti in chletter, per esempio i marchi per la piegatura in tre del foglio A4 per inserirlo dentro le buste lunghe, e con l’indirizzo del destinatario già inserito in modo che sia centrato verticalmente nella finestra delle buste commerciali. Ci osno anche le semplici ridefinizioni di testatine e piedini con i comandi interni di LaTeX, senza ricorrere a fancyhdr (avrei potuto farlo, ma a me viene più facile ridefinire come piace a me senza vincoli imposti da altri pacchetti. Tutta la classe ammonta a solo 140 righe di codice, compresi i commenti e le righe vuote lasciate per leggibilità; come vedi si tratta di una cosa semplicissima. eppure funzionale
::
Nella Guida GuIT ci sono alcune spiegazioni su come fare; c’è un paragrafo apposta.La spiegazione del tuo problema è che la scatola che contine la figura ha il suo punto di riferimento nell’angolo inferiore sinistro; la cella di tipo p, invece, ha il suo punto di riferimento coincidente con quello della sua prima riga di testo; tabular allinea i contenuti delle celle allineando i punti di riferimento.
Come cambiare i punti di riferimento? Se carichi il pacchetto array, disponi di altri due descrittori di colonna dello stesso tipo del descrittore p{…}, e sono il descrittore m{…} e il descrittore b{…}; prova con il descrittore b{…} che mette il punto di riferimento del contenuto della cella in coincidenza con quello dell’ultima riga del testo. Se non bastasse, aggiungi in fondo al testo un [tt]\hrule height=0pt depth=0pt[/tt] che è invisibile, ma spsta il punto di riferimento del testo sotto i discendenti dell’ultima riga.
::
Maurizio, secondo me ti sei spiegato benissimo; oppure io ho la pretesa di aver capito bene ciò che a te pare oscuro.Quello che non posso capire io è il genere di errori che ti provocano le lettere accentate; sono sicuro che si tratti di un problema di codifica, ma senza vedere la malattia non posso prescrivere la terapia giusta…
Mentre ci pensi io provo a fare qualche prova per me stesso, per allenarmi a usare plain TeX con codifiche diverse e con lingue diverse; per le lingue sono ottimista; per le codifiche conosco una cura che non dipende da TeX o LaTeX, ma non so se i tuoi file siano ancora integri o se nelle prove che hai fatto si sono rovinati (in questo caso speriamo che siano pochi file rovinati, rispetto ai tanti che dovresti ricompilare).
Se vuoi comunicare con me per e mail, il mio indirizzo di posta elettronica si trova in alcune delle guide tematiche, in tutti gli articoli pubblicati su ArsTeXnica (tutte cose che trovi nella sezione Documentazione o nella sezione ArsTeXnica di questo sito; fra i vari personaggi che si chiamano Claudio, io sono quello il cui cognome comincia con B) [questa reticenza a mettere i miei dati sul forum, è epr evitare il malware che circola in rete e in particolare gli sniffer… con gli sniffer la prudenza non è mai troppa]
::
Tenuto conto che non si può arrestare una compilazione se non si è in outer vertical mode, la soluzione seguente`% !TEX TS-program = pdflatex\documentclass{article}
\usepackage{tikz}\newif\ifesci \escifalse
\newcommand\arrestatutto{\ifesci\expandafter\stop\fi}
\tikzset{
prova/.pic={%
\ifdim#1 pt>1pt
\typeout{^^J^^J ****************^^J
Valore inaccettabile
^^J ****************^^J^^J}
\escitrue
\aftergroup\arrestatutto
\else
\draw ({asin(#1)},0) circle (1cm);
\fi
} % chiude il comando pic
} % chiude il comando tikzset\begin{document}
\begin{tikzpicture}
\pic{prova=0.5};
\end{tikzpicture}\begin{tikzpicture}
\pic {prova=2};
\end{tikzpicture}
\end{document}` a me funziona.
-
AutoreRisposte