egreg9

Risposte nei forum create

Stai visualizzando 15 risposte – dal 10,216 al 10,230 (di 13,205 totali)
  • Autore
    Risposte
  • in risposta a: Box che riempie la riga/più righe automaticamente #23803
    Up
    0
    Down
    ::

    Spero di non fare una domanda idiota, ma ho cercato sul forum e non ho trovato (o forse ho cercato le parole sbagliate e chiedo scusa).

    Sto preparando un modulo per le domande/risposte al mio esame con box per scrivere le risposte che adesso sto facendo in questo modo:

    \item Quando prendi in considerazione una violazione dell’asimmetria?
    \begin{tabular}{|l|}
    \hline
    \rule[-10mm]{0mm}{3cm}\hspace{14cm} \\
    \hline
    \end{tabular}

    oppure

    \item \fbox{Puoi assumere che i due gruppi abbiano la stessa varianza? \hspace{2cm}}

    Tuttavia devo indicare io i cm dentro ad \hspace. Ho provato ad usare \fill ma non ottengo quello che voglio, cioè che il box vada fino al margine destro.
    \width o \textwidth non va bene perché mi sborda, dovrei usare qualcosa tipo (\whidth – dove sono adesso!)

    Sapete darmi un suggerimento?

    Non userei un tabular per il primo e la soluzione del secondo caso è simile:
    `\item Quando prendi in considerazione una violazione dell'asimmetria?

    \framebox[\linewidth]{\rule[-10mm]{0mm}{3cm}}

    \item \framebox[\linewidth][l]{Puoi assumere che i due gruppi abbiano la stessa varianza?}`
    Il limite è che nel secondo caso il testo non può andare a capo. Per quello occorre un po’ di lavoro in più.

    Ciao
    Enrico

    in risposta a: Linee accanto a un elenco e righe vuote in serie. #23801
    Up
    0
    Down
    ::

    OT
    Evviva, sono stato più veloce del prof egreg9 ( 😀 )!
    Evidentemente starà brindando con i suoi companion il superamento dei 3000 post sul forum. Grande !!!

    Qualche volta mi tocca perfino lavorare, sai? 🙂

    Traggo dagli “appunti” (pagina 137):
    `\newenvironment{linee}[1][1]
    {\flushleft\minipage{\textwidth}
    \linespread{#1}\selectfont
    \def\\{\begingroup\leavevmode\parfillskip=0pt
    \hrulefill\endgraf\endgroup}}
    {\endminipage\endflushleft}`
    Si può usare così:
    `\begin{linee}[1.2]
    V. Ino \\
    B. Irra \\
    \end{linee}`
    L’argomento opzionale è per distanziare le righe fra loro. Non è difficile modificarlo per ottenere altri effetti.

    Ciao
    Enrico

    in risposta a: Calcoli temporali (date, età, ecc.) #23790
    Up
    0
    Down
    ::

    Ciao a tutti,
    tempo fa, la lettura della discussione Fare calcoli in (La)TeX (http://www.guit.sssup.it/phpBB2/viewtopic.php?t=1304) mi aveva fatto pensare a come poter eseguire a LaTeX dei calcoli «temporali».

    Cerco di spiegarmi meglio. Ad esempio, il pacchetto «datetime» (non è detto che si debba tirare in ballo questo per forza) mette a disposizione il comando
    `\newdate{name}{day}{month}{year}`
    per «salvare» una data, ma, a parte il fatto di potervi fare riferimento, non permette di fare elaborazioni più complesse.

    Tuttavia, immaginando di salvare una data con nome «data», sarebbe fantastico poter scrivere
    `Il pacchetto è stato spedito \calcolaGiorni{data} giorni fa e non l'ho ancora ricevuto`
    oppure
    `Io ho \calcolaAnni{data} anni`
    volendo, anche in un modo diverso
    `Il pacchetto è stato spedito \calcola{giorni}{data} giorni fa…
    […]
    Io ho \calcola{anni}{data} anni`
    o in altri modi ancora, per esempio facendo seguire il tutto da una stringa («giorni», «anni», ecc.) decisa a seconda del valore dell’opzione, prendendo in prestito una (parte) di concetto da «varioref». Ad ogni modo, ciò che mi interessa di più è fare i calcoli.

    È possibile fare quello che chiedo?

    Mi riallaccio con la discussione indicata all’inizio: sono consapevole dell’esistenza di R e del fatto che è molto potente. Tuttavia anch’io, come Gus, cercavo una soluzione «interna» a LaTeX, o magari implementata da un pacchetto.

    P.S. scusate se per caso l’argomento è stato già trattato; non ne ho trovato traccia…

    Non so se esiste un pacchetto appropriato. Così, a occhio, direi che occorre una funzione che converta una data nel numero di giorni da un “epoch” fissato arbitrariamente, in modo che poi le differenze in giorni, mesi o anni siano calcolabili in modo abbastanza semplice (per i mesi facendo una media di 30 giorni a mese e per gli anni una media di 365 giorni; si può anche rendere la cosa più “precisa”, volendo). Penso che sia molto più semplice affidarsi a un programma esterno.

    In un sistema Unix il comando “date” ha queste possibilità.

    Ciao
    Enrico

    in risposta a: Definizione pacchetto con opzioni (contrastanti) #23694
    Up
    0
    Down
    ::

    Grazie per la risposta (e, già che ci siamo, complimenti per il suo nuovo scritto, anche se ci vorrà un bel po’ per digerirlo. Bellissimo Utopia, che diventa un potenziale candidato per il carattere della mia tesi, concorrendo con il Palatino (e, più in generale, lo stile ClassicThesis) pubblicizzato da Lorenzo e con Lucida Bright. Senza nulla togliere ai Computer Modern).

    Il comando \@iden semplicemente toglie le graffe attorno al suo argomento.

    Ho capito. Grazie per il codice, che risolve il mio problema alla perfezione.

    Solo ancora una piccola precisazione su questa porzione di codice:
    `\newif\if@terminecolor
    \DeclareOption{stampa}{\@terminecolorfalse}
    \DeclareOption{colored}{\@terminecolortrue}
    \ExecuteOptions{colored}
    \ProcessOptions\relax`
    Io avevo chiesto di realizzare un’opzione, «stampa», ma vedo che lei ne ha dichiarata anche un’altra, di nome «colored»; quest’ultima, mi sembra di capire, impone che sia attivata l’enfatizzazione a colore dei termini, ed esegue quindi le istruzioni illustrate più in basso nel ramo «if».

    In parole povere, nel sorgente LaTeX, posso scrivere indifferentemente
    `\usepackage{pacchetto}`
    oppure
    `\usepackage[colored]{pacchetto}`
    o almeno questo è quello che sembra suggerire la pratica.

    È più semplice fare in questo modo se hai opzioni “opposte”. L’opzione colored è data di default e si può omettere, ma serve per far leggere correttamente il .sty.

    Ciao
    Enrico

    in risposta a: Mantenere insieme l’argomento di \lstinline #23757
    Up
    0
    Down
    ::

    `\documentclass{scrreprt}

    \usepackage[writefile]{listings}
    \usepackage{classicthesis-ldpkg}
    \usepackage[eulerchapternumbers,subfig,beramono,
    eulermath,pdfspacing]{classicthesis}

    \DeclareRobustCommand*{\comando}[1]{\lstinline!\\#1!}
    \begin{document}
    Provalo provalo provalo provalo provalo \comando{newcommand} prova \comando{newcommand} …
    \end{document}`
    Naturalmente, vorrei evitare quella divisione tra la barra rovescia (in fin di riga) e il “newcommand” all’inizio della riga successiva (mantenendo però l’uso di listings, che mi colora le parole chiave!).

    Come si può fare?

    `\DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}}`
    Non ci voleva tanto, eh? 😉

    Ciao
    Enrico

    in risposta a: [Risolto] uso pacchetto frontespizio #23738
    Up
    0
    Down
    ::

    Il pacchetto è adatto per la classe book (o amsbook). Con report il controllo non è così buono. Ma report è inadatta per un lavoro come una tesi.

    Ciao
    Enrico

    PS: messaggio numero 3000 ❗ 8) ❗ Mi fa piacere sia riguardo a “frontespizio”.

    ..perchè inadatto? non è molto simile a book?
    solo che mette le testatine (che io non voglio!),
    di default impagina fronte-retro (ma basta mettere twoside con report)
    e apre i capitoli sulla destra (altra cosa che a me non interessa)
    ……mi sembrava semplice..bo, confusa.. 😕
    grazie comunque – giulia

    `\documentclass[a4paper,openany]{book}
    \pagestyle{plain}`
    Con book hai parecchie altre cose interessanti, non fosse altro che per \frontmatter e \mainmatter.

    Ciao
    Enrico

    in risposta a: [RISOLTO] Extend Captions #23733
    Up
    0
    Down
    ::

    Grazie moltissime, è veramente perfetto! Sì, userò \abcname nelle macro, ma almeno nelle definizioni nel preambolo me lo volevo risparmiare se possibile, eheh! Grazie!
    Ora confronto permettimi un confronto…
    Tua versione CORRETTA:
    `\expandafter\let\expandafter\@tempA\csname captions#1\endcsname
    \toks0=\expandafter\expandafter\expandafter{%
    \expandafter\@tempA\expandafter\def\csname #2name\endcsname{#3}}
    \expandafter\xdef\csname captions#1\endcsname{\the\toks0 }`
    Versione mia errata:
    `\expandafter\let\expandafter\@tempA\csname captions#1\endcsname
    \expandafter\let\expandafter\@tempB\csname #2name\endcsname
    \toks0=\expandafter{\@tempA\def\@tempB{#3}}
    \expandafter\xdef\csname captions#1\endcsname{\the\toks0}`

    Ammesso che conosco meno della metà dei comandi che ci sono… ma la differenza a occhio mi sembra solo di alcuni \expandafter in meno, o sbaglio?

    Sbagli. Supponendo una chiamata
    `\ExtendCaptionsM{italian}{abc}{pippo}`
    il tuo codice inserisce alla fine del testo di sostituzione della macro \captionsitalian i token
    `\def\@tempB{pippo}`
    e non quello che speri tu. Il token \@tempB passa del tutto inalterato e la sua definizione iniziale è di essere del tutto equivalente a \relax (perché, probabilmente, \abcname non è definito).

    Con \let rendi equivalente al significato di al momento dell’assegnazione. Nel tuo codice diventa equivalente a un comando costruito con \csname che, se non è definito, è equivalente a \relax.

    Quando poi darai \selectlanguage{italian}, LaTeX eseguirà \def\@tempB{pippo} che non serve a nulla. Gli \expandafter che ho usato servono proprio per mettere nella lista di token proprio il comando \abcname.

    Proviamo a seguire l’espansione, mettendo “abc” al posto di #2 e la stringa “pippo” al posto di #3:
    `\toks0=\expandafter\expandafter\expandafter{%
    \expandafter\@tempA\expandafter\def\csname abcname\endcsname{pippo}}`
    Siccome dopo \toks0= ci deve essere una graffa, TeX comincia a espandere. Chiamo (i) l’i-esimo \expandafter (i va da 1 a 5).

    (1) espande (3) che espande (4) che espande (5) il quale espande \csname; a questo punto abbiamo
    `\toks0=\expandafter{\@tempA\def\abcname{pippo}}`
    e ora tocca a (2) che espande \@tempA, cioè libera il testo di sostituzione di \captionsitalian.

    Ciao
    Enrico

    in risposta a: [Risolto] uso pacchetto frontespizio #23736
    Up
    0
    Down
    ::

    Ho un piccolo problema con il pacchetto per il frontespizio della tesi:

    con l’opzione “twoside” il retro del frontespizio non dovrebbe essere automaticamente una pagina bianca (non numerata)?
    almeno mi sembrava di aver capito così leggendo la documentazione allegata al pacchetto……
    invece nel mio documento a pagina 2 inizia l’indice.
    Questo è il codice che uso:

    `\documentclass[11pt,a4paper,twoside,titlepage]{report}

    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{frontespizio}
    \usepackage{graphicx}
    \usepackage{subfig}
    \usepackage{amsmath}
    \usepackage{natbib}

    \numberwithin{equation}{chapter}

    \begin{document}

    \begin{frontespizio}
    ……..i vari comandi..
    \end{frontespizio}

    \tableofcontents

    ecc.`

    Allora per ovviare ho seguito le indicazioni trovate in
    http://www.guit.sssup.it/phpBB2/viewtopic.php?t=3910&start=0&postdays=0&postorder=asc&highlight=
    ed ho aggiunto
    `\newpage\null\thispagestyle{empty}\newpage`
    subito dopo \end{frontespizio}

    e così è ok, ma volevo sapere se il comportamento di default del pacchetto è quello di non lasciare il retro bianco o se ho sbagliato qualcosa io nel codice….

    Inoltre mi sono accorta che la pagina successiva (3) parte con il margine sulla destra invece che sulla sinistra e così per tutte le pagine dispari successive (e viceversa per le pari)….. ma credo che questo non c’entri niente con il frontespizio e a quanto pare sembra che debba essere così, mah… 🙂

    Ah ultima cosa:
    il file frontespizio.sty l’ho messo dentro la cartella dove si trova il .tex

    Ringrazio anticipatamente per la pazienza di chi leggerà e mi scuso se son stata un attimino “logorroica” 8)

    Il pacchetto è adatto per la classe book (o amsbook). Con report il controllo non è così buono. Ma report è inadatta per un lavoro come una tesi.

    Ciao
    Enrico

    PS: messaggio numero 3000 ❗ 8) ❗ Mi fa piacere sia riguardo a “frontespizio”.

    in risposta a: [RISOLTO] Extend Captions #23731
    Up
    0
    Down
    ::

    Perfetto, grazie, così funziona!
    Io avevo scelto quella via perché nell’articolo era messo come esercizio per il lettore, ma così mi va bene lo stesso!

    Io quello che speravo era di fare in modo che il \@tempB diventasse come \VALOREname con il solo VALORE scritto da me quando chiamo la macro, così che dentro essa non dovessi scrivere io \abstractname per esempio, ma solo abstract.

    Grazie ancora tante, buona serata!

    `\expandafter\let\expandafter\@tempA\csname captions#1\endcsname
    \toks0=\expandafter\expandafter\expandafter{%
    \expandafter\@tempA\expandafter\def\csname #2name\endcsname{#3}}
    \expandafter\xdef\csname captions#1\endcsname{\the\toks0 }`
    Adesso funziona
    `\ExtendCaption{italian}{abc}{pippo}`
    che aggiunge
    `\def\abcname{pippo}`
    a \captionsitalian. Ma poi nelle macro dovrai comunque usare \abcname, quindi tanto vale fare meno fatica, non credi?

    Ciao
    Enrico

    in risposta a: [RISOLTO] Extend Captions #23729
    Up
    0
    Down
    ::

    Il problema era proprio quello, grazie!
    Ora ho scritto
    `\makeatletter
    \newcommand*\ExtendCaptionsM[3]
    { { \@ifundefined{captions#1}
    { \PackageWarning{prova}%
    { Language option #1 not specified
    \MessageBreak
    Skipping any redefinition
    \MessageBreak
    }
    }
    { \expandafter\let\expandafter\@tempA
    \csname captions#1\endcsname
    \expandafter\let\expandafter\@tempB
    \csname #2name\endcsname
    \toks0=\expandafter{\@tempA
    \def\@tempB{#3}}
    \expandafter\xdef
    \csname captions#1\endcsname{\the\toks0}
    }
    }
    }
    \makeatother`
    In modo da usarlo come
    `\ExtendCaptionsM{italian}{preface}{NuovaPrefazione}`
    ma non funziona… anche se non dà errori!
    Siccome so già di aver fatto qualche stupidata, qualcuno sa aiutarmi?

    Stai aggiungendo a \captionsitalian i token
    `\def\@tempB{NuovaPrefazione}`
    che non è proprio utilissimo. Immagino che tu voglia una cosa del genere:

    primo argomento = lingua
    secondo argomento = comando che contenga la “fixed tag”
    terzo argomento = la fixed tag nella lingua

    Il secondo argomento dovrebbe essere proprio un comando: quindi meglio una sintassi come
    `\ExtendCaptionsM{italian}{\newprefacename}{Nuova Prefazione}`
    e la parte rilevante del codice (cioè il terzo argomento di \@ifundefined) diventa
    `\expandafter\let\expandafter\@tempA\csname captions#1\endcsname
    \toks0=\expandafter{\@tempA\def#2{#3}}
    \expandafter\xdef\csname captions#1\endcsname{\the\toks0 }`
    In realtà non ci sarebbe bisogno di \@tempA, con un trucco più bieco.
    `\toks0=\expandafter\expandafter\expandafter{%
    \csname captions#1\endcsname\def#2{#3}}
    \expandafter\xdef\csname captions#1\endcsname{\the\toks0 }`
    Il primo \expandafter espande il terzo che espande \csname producendo il token \captionsitalian (se il primo argomento è italian); rimane il secondo che a questo punto espande \captionsitalian, come desiderato.

    Ciao
    Enrico

    in risposta a: [RISOLTO] Extend Captions #23727
    Up
    0
    Down
    ::

    Ciao a tutti… ho un problema.

    Leggendo l’articolo di Claudio Beccari su arstexnica 1 per i registri token, ho voluto usare quella soluzione per rinominare e creare nuovi nomi da mettere nei captions italian e english.
    Il codice a pag 11 purtroppo mi genera circa 35 errori (sostenendo che mancano delimitatori $, errori di spazi verticali e altri). Inoltre ho l’avvertimento che non ho caricato il linguaggio italiano.
    Usando semplicemente \addto{\captionsitalian}… ottengo anche qui dei problemi!
    Insomma, vorrei trovare il modo per inserire altri nomi da me definiti, così da usarli nel testo.
    In babel carico [english,italian] e il documento non ha errori e viene generato correttamente (senza questa nuova funzionalità).

    Qualcuno sa darmi una mano?

    Non sarebbe meglio fare un esempio del codice che ti dà errore? Ma forse ti sei solo dimenticato di proteggere quel codice con \makeatletter prima e \makeatother dopo.

    Ciao
    Enrico

    in risposta a: Appunti di programmazione in LaTeX e TeX #23719
    Up
    0
    Down
    ::

    Che felicità 😀 😀 😀 😀 😀 😀 😀

    Prof.,

    ti segnalo i riferimenti impazziti della toc (come sempre manca quel maledetto \phantomsection davanti la bibliografia e l’indice analitico).

    Nella sezione \halign puoi aggiungere comodamente questo esempio
    http://www.guit.sssup.it/phpbb/viewtopic.php?t=2772
    che usa ialign, vtop e noalign. Poi manca un esempio con \valign anche se forse è ridondante.

    Corretti (spero) i riferimenti. Ho aggiunto l’esempio che mi hai indicato e anche un esempio di \valign 🙂 Se poi guardi il sorgente relativo, vedrai che per comporlo ho usato \valign. ❗

    Un \valign dentro un \valign 8)

    Ciao
    Enrico

    in risposta a: Definizione pacchetto con opzioni (contrastanti) #23691
    Up
    0
    Down
    ::

    Ma non facevi prima a scrivere
    `
    \if@terminecolor
    \RequirePackage{color}
    \definecolor{celeste}{rgb}{0,.5,.99}
    \newcommand\termine{\textcolor{celeste}}
    \else
    \relax %oppure \let\termine\relax allo scopo di definire \termine e basta
    \fi `
    ❓

    Certo che no! Nel documento ci sarà scritto \termine, se non lo definisci come si fa?

    Una curiosità: dopo l’istruzione `\newcommand\termine{\@iden} `
    il comando \termine è vuoto? Oppure no?

    Il comando \termine diventa essenzialmente equivalente a \@iden: perciò l’espansione di “\termine{abc}” diventa “\@iden{abc}” che a sua volta si espande in “abc” senza le graffe. Per semplicità ho proposto “\newcommand{\termine}{\@iden}”, che dovrebbe essere “\let\termine\@iden”, in modo da risparmiare un’espansione a ogni uso di \termine.

    Definire \termine equivalente a \relax, come vorresti tu, non sarebbe corretto, anche se probabilmente innocuo nel caso particolare. Introdurresti un token non espandibile, “\relax”, dove non serve. A livello utente, \termine appare come un comando con un argomento, è bene che si comporti come tale togliendo di mezzo le graffe se non servono.

    Per esempio, la macro \@secondoftwo è definita come
    `\def\@secondoftwo#1#2{#2}`
    e non come
    `\def\@secondoftwo#1{}`
    che potrebbe sembrare più semplice, visto che non si raccoglie un argomento. Ma con la prima definizione, “\@secondoftwo{abc}{xyz}” si espande in “xyz”, con la seconda si espanderebbe in “{xyz}” che è molto diverso.

    Ciao
    Enrico

    Up
    0
    Down
    ::

    in un sorgente LaTeX contentente termini stranieri, ma dove la lingua principale è l’italiano, questi termini stranieri devono seguire le convenzioni di sillabazione di quale lingua? Della propria? Oppure di quella italiana, che (in questo caso) è quella principale?

    Bella domanda! Io “a sentimento” direi che se ci cita un’espressione lunga in una lingua straniera, la sillabazione deve essere senz’altro quella della lingua originale. Però per una sola parola o per una breve espressione come “savoir-faire” o “reception” all’interno di una frase, non saprei.

    Aspettiamo gli esperti!

    certi autori scrivono le parole straniere in un testo italiano in romano, altre in corsivo. Quale sarebbe la formattazione giusta da adottare?

    Le parole straniere non di uso comune per il lettore vanno in corsivo o fra virgolette.

    Le parole straniere sono da evitare, per quanto possibile. Ciò non significa volerle eliminare in favore di espressioni brutte o locuzioni contorte: a volte si può adoperare una parola italiana dove altri, per pigrizia o snobismo, ne userebbero una inglese (o magari tedesca pronunciata all’inglese :evil:).

    Come giustamente osserva Lorenzo, le parole straniere non comunemente usate dal lettore “medio” del testo andrebbero in corsivo, almeno alla prima apparizione dove ne viene spiegato il significato. L’esempio di “skyscraper” non è proprio calzante, visto che il calco “grattacielo” è ampiamente diffuso in italiano; inoltre la corretta sillabazione in inglese è sky-scrap-er.

    In un testo su TeX, come esempio di uso di parole straniere, è difficile trovare un sostituto efficace per “token” o “box” (scatola non va tanto bene, a mio parere, perché qui “box” è nel significato di area delimitata da linee diritte). Sarebbe certamente esagerato scrivere queste due parole in corsivo ogni volta. L’ho fatto per “token” in un articolo su Ars TeXnica, che però è breve e rivolto anche a non specialisti. Di sicuro non lo farei nel testo di quasi 160 pagine che dovrebbe vedere la luce fra poco, dedicato alla programmazione LaTeX. ❗

    A questo punto sorge il problema delle regole di cesura da scegliere per la parola straniera accettata. Mi sentirei di fare questa proposta: la parola straniera non si spezza per niente, se possibile. Se proprio diventa impossibile l’impaginazione con la parola intera, si decide caso per caso.

    È ovvio che in una grammatica inglese le parole in quella lingua devono essere spezzate secondo le regole dell’inglese. Probabilmente lo stesso vale per un testo di carattere filosofico che contenga le solite “Weltanschauung” e simili. Per parole più comuni e diffuse in italiano, propenderei per una cesura con le regole dell’italiano. Il vantaggio di TeX è che ricorre alla cesura solo quando proprio non ne può fare a meno, non è difficile controllare ciò che succede scorrendo rapidamente il testo composto.

    Ciao
    Enrico

    in risposta a: Definizione pacchetto con opzioni (contrastanti) #23689
    Up
    0
    Down
    ::

    Ciao a tutti,
    qualche giorno fa ho deciso di scrivere un pacchettino per risolvere alcune mie esigenze.

    Il pacchetto (di cui riporto solo il codice rilevante), tra le altre cose, «enfatizza» certi termini che hanno per me un significato particolare colorandoli di celeste. Chiaramente, questa caratteristica non è sfruttabile se, come faccio talvolta, ho bisogno di mettere il tutto su carta usando una stampante laser in bianco e nero.

    Ho pensato quindi di definire un’opzione di nome «stampa»; l’idea di base è che il pacchetto si comporti così:

    • il pacchetto definisce un colore di nome «celeste» che rappresenta (idealmente) una tonalità di celeste;

    • se il pacchetto viene caricato senza opzioni, il comando «\termine{…}» che esso fornisce colora effettivamente il suo parametro di celeste;

    • se lo si carica specificando l’opzione «stampa», il colore «celeste» viene (ri)definito in termini di nero, e pertanto i termini assumeranno quest’ultimo colore.

    Come gestire questa opzione? Riprendendo un discorsetto di qualche tempo fa (Occultare un comando con parametri, consultabile all’indirizzo http://guit.sssup.it/phpbb/viewtopic.php?p=7837#7837), ho dato un’occhiata (veloce) a clsguide.pdf e ho scritto i due file riportati di seguito.

    «pacchetto.sty»:
    `\NeedsTeXFormat{LaTeX2e}
    \ProvidesPackage{pacchetto}[2008/04/18 Enfatizza i termini]

    \RequirePackage{color}

    \definecolor{celeste}{rgb}{0,.5,.99}

    \DeclareOption{stampa}{\definecolor{celeste}{rgb}{0,0,0}}
    \ProcessOptions\relax

    \newcommand{\termine}{\textcolor{celeste}}

    \endinput`
    «prova.ltx»:
    `\documentclass{article}

    \usepackage[stampa]{pacchetto}

    \begin{document}

    Introduciamo un \termine{termine}\dots

    \end{document}`
    Il tutto sembra funzionare, ma ho due perplessità sulla correttezza del mio codice:

    1. se l’istruzione «\definecolor{celeste}{rgb}{0,.5,.99}» viene inserita dopo la dichiarazione dell’opzione, non ottengo l’effetto sperato (cioè i termini vengono comunque colorati di celeste, anche se il pacchetto viene caricato con l’opzione «stampa»);

    2. avrei voluto scrivere il codice in un altro modo (ammesso che sia possibile); ecco l’idea:

      `\NeedsTeXFormat{LaTeX2e}
      \ProvidesPackage{pacchetto}[2008/04/18 Enfatizza i termini]

      \RequirePackage{color}

      \definecolor{celeste}{rgb}{…} <--- definizione del nome del colore senza specificarne il valore \DeclareOption{stampa}{...} <--- dichiarazione dell'esistenza di \ProcessOptions\relax un'opzione senza specificarne il codice relativo if se si chiama l'opzione «stampa», alla variabile «celeste» viene assegnato il colore nero else alla variabile «celeste» viene assegnato il colore celeste fi \newcommand{\termine}{\textcolor{celeste}} \endinput`[/ol]È possibile fare quello che chiedo? E se sì, qual è la sintassi corretta?

    3. `\NeedsTeXFormat{LaTeX2e}
      \ProvidesPackage{pacchetto}[2008/04/18 Enfatizza i termini]

      \newif\if@terminecolor
      \DeclareOption{stampa}{\@terminecolorfalse}
      \DeclareOption{colored}{\@terminecolortrue}
      \ExecuteOptions{colored}
      \ProcessOptions\relax

      \if@terminecolor
      \RequirePackage{color}
      \definecolor{celeste}{rgb}{0,.5,.99}
      \newcommand\termine{\textcolor{celeste}}
      \else
      \newcommand\termine{\@iden}
      \fi
      \endinput`
      Il comando \@iden semplicemente toglie le graffe attorno al suo argomento.

      Ciao
      Enrico

    Stai visualizzando 15 risposte – dal 10,216 al 10,230 (di 13,205 totali)

    Go to top▲