egreg9

Risposte nei forum create

Stai visualizzando 15 risposte – dal 11,266 al 11,280 (di 13,205 totali)
  • Autore
    Risposte
  • in risposta a: Campi delimitati in tex con \ o { #18111
    Up
    0
    Down
    ::


    Aggiungo alla risposta precedente. C’è una soluzione, più lenta, al problema più generale di trattare una lista di token della forma
    `\comando{}`
    oppure
    `{}`
    ed ottenere solo i iniziali, con la restrizione che il deve avere un solo argomento.
    `\def\@@taglia#1{\def\@collect@taglia{}\@@@taglia #1\@nil}
    \def\@@@taglia{%
    \futurelet\@taglia@next\@do@taglia}
    \def\@do@taglia#1{%
    \ifx\@taglia@next\@nil
    \let\next\relax
    \else
    \ifcat\noexpand\@taglia@next\bgroup
    \let\next\@gobble
    \else
    \ifcat\noexpand\@taglia@next\relax
    \let\next\@gobbletwo
    \else
    \edef\@collect@taglia{\@collect@taglia #1}%
    \let\next\@@@taglia
    \fi\fi\fi
    \next}`
    Dopo \@@taglia{xxx{1}} oppure \@@taglia{xxx\hbox{1}}, la stringa xxx si troverà nella macro \@collect@taglia.

    Adesso puoi definire l’azione che desideri. Per esempio, per stampare la stringa, puoi dire
    `\def\@taglia#1{\@@taglia{#1}\@collect@taglia}`
    passando la lista di token originale a \@taglia come argomento.

    Ciao
    Enrico

    in risposta a: Campi delimitati in tex con \ o { #18110
    Up
    0
    Down
    ::

    Devo dividere un token in tex delimitato in questo modo
    `
    xxx\hbox {{\mathsurround \z@ \ensuremath {^{\unhbox \voidb@x \hbox {\fontsize 6\z@ \normalfont \unskip 1}}}}}`
    o alternativamente così
    `
    xxx{1}
    `
    Ho provato a creare il comando
    `
    \def\@taglia#1\hbox{#1}

    \def\@taglia#1\char123{#1}
    `
    per ottenere solo xxx
    ma mi da un errore di extra parentesi nell’argomento della funzione.

    Non che si capisca molto bene, sai? Provo a sfogliare i tarocchi e vediamo se indovino.

    Hai una lista di token che contiene qualcosa seguita da una graffa aperta, cose che non ti interessano e finalmente una graffa chiusa. Ciò che vuoi è estrarre ciò che viene prima delle graffe. Il problema è che solo l’ultimo argomento può essere delimitato da una graffa aperta e questo si fa precedendo la graffa di apertura nella definizione con #.
    Devi prima trovare il tuo argomento xxx, poi buttare via la parte fra graffe.
    `\def\@taglia#1#{#1\@gobble}`
    La macro \@gobble è una funzione del nucleo di LaTeX:
    `\def\@gobble#1{}`
    Vediamo che succede con la chiamata \@taglia xxx{1}: \@taglia cerca il suo argomento, che è delimitato da una graffa aperta, quindi diventa xxx; una volta trovato l’argomento, lo rimette nella lista di token e ci aggiunge \@gobble in fondo che cerca il suo argomento, cioè il gruppo tra graffe e se lo mangia.

    Attento però che \@taglia{xxx{1}} si mangia tutto, perché l’argomento di \@taglia è vuoto. Se vuoi usarlo così, devi fare in un altro modo
    `\def\@@taglia#1#{#1\@gobble}
    \def\@taglia#1{\@@taglia #1}`
    Annotazione spero utile: \char123 non equivale a scrivere una graffa nella lista di token, ma è un comando per stampare il carattere 123.

    Ma questo è solo l’assaggio. Il tuo problema è che dopo xxx ci può essere \hbox. Io intanto passerei la lista di token come argomento completo a una macro
    `\def\@taglia#1{\@taglia@i #1\hbox\@nil}
    \def\@taglia@i#1\hbox#2\@nil{%
    \@taglia@ii #1{}}
    \def\@taglia@ii#1#{%
    \def\@taglia@iii{#1}%
    \expandafter\@taglia@iii\@gobble}`
    Adesso \@taglia{xxx{1}} si espande come xxx{}, mentre \@taglia{xxx\hbox{1}} si espande come xxx. Se non ti va quella coppia di graffe in più, bisogna lavorarci ancora.

    Se poi oltre a \hbox puoi avere altro, be’, il lavoro è assai più complicato.

    Ciao
    Enrico

    in risposta a: Comprendere un comando in un file Cls. #18099
    Up
    0
    Down
    ::

    Grazie mille, adesso spero di riuscire ad andare avanti e capire fino in fondo come funziona la funzione generale usata. Se volete posso postarla, serve a creare una lista di autori e ad attribuire ad ogni autore il corretto indirizzo e/o affiliazione.

    Enrico veramente grazie. Purtroppo senza studiare tutto il Texbook in dettaglio diventa difficile comprendere cosa si nasconde nelle varie macro di latex

    Quelle macro vengono dai pacchetti creati per l’AMS da Michael Downes, che era un genio della programmazione TeX. La funzione \nxandify serve per creare la lista degli autori lasciando la possibilità di introdurli semplicemente scrivendo più volte i comandi \author e \address. Lo scopo è di evitare espansioni premature delle macro contenute negli argomenti di questi comandi.

    Purtroppo la documentazione di questi pacchetti non è molto dettagliata.

    Ciao
    Enrico

    in risposta a: Il millesimo topic sul posizionamento degli oggetti flottant #18060
    Up
    0
    Down
    ::

    Ciao a tutti. In un documento ho introdotto due tabelle. La prima è piccolina, di poche righe; la seconda è di medie dimensioni, con altezza pari a circa un terzo del corpo del testo.

    Le ho introdotte entrambi con opzione [tb]. Dal momento che sono piuttosto ravvicinate, LaTeX non ha trovato di meglio che posizionarle in una stessa pagina, in alto, una dopo l’altra.

    Non è un gran bel vedere.

    1. Voi che dite: il posizionamento va bene così?

    2. Se la risposta alla domanda precedente è “no”, potrei anticipare l’inserimento della prima tabella. In questo caso, però, succederebbe che la tablla anticiperebbe il testo che la descrive: è una prassi valida, questa? (la risposta alla domanda mi interessa di per sé, indipendentemente dal caso in questione)

    3. Non sarebbe magari il caso di inserire la tabella di medie dimensioni con opzione [p]? In generale, quanto -di preciso- deve essere “grande” una tabella (o un’immagine) perché sia il caso di inserirla con opzione [p] e non [tb]?

    Se la tabella è in testa alla pagina nella quale c’è la descrizione, va benissimo. L’importante è che sia visualmente separata dal corpo del testo.

    Una piccola sopra una grande mi sa di bruttino.

    Ciao
    Enrico

    in risposta a: Classicthesis: paragrafi, testatine e indici #18107
    Up
    0
    Down
    ::

    Ciao a tutti. Il seguente documento
    `\documentclass{scrreprt}

    \usepackage{classicthesis-ldpkg}
    \usepackage[subfigure]{classicthesis}
    \usepackage{lipsum}

    \begin{document}
    \tableofcontents
    \pagestyle{scrheadings}
    \myChapter{Un capitolo}
    \lipsum[1]
    \section[Tekel]{Mane}
    \lipsum
    \lipsum
    \end{document}`
    produce un paragrafo intitolato “Mane”, mentre la corrispondente scritta nella testatina e nell’indice è “Tekel”.

    Vorrei poter controllare le tre cose separatamente. Cioè vorrei creare
    1. un paragrafo intitolato “Mane”,
    2. la cui voce corrispondente nell’indice è “Tekel”,
    3. la cui voce corripondente nella testatine è “Fares”.

    È possibile?

    Sentiti ringraziamenti anticipatI, 😉
    L.

    P.S. Mi andrebbe benissimo anche una soluzione “spiccia e sporca”: il problema ce l’ho solo in un paragrafo…

    `\section[Tekel]{Mane}
    \sectionmark{Fares}`
    Ciao
    Enrico

    in risposta a: Comprendere un comando in un file Cls. #18096
    Up
    0
    Down
    ::

    Mi sto rompendo la testa per capire cosa fa questo comando che viene utilizzato in un file di classe cls per listare un elenco di autori, ma purtroppo non ne sto venendo fuori.

    Occorre sapere che \toks@ indica un registro di token e che \@xp è un’abbreviazione di \expandafter.
    `\newcommand{\nxandlist}[4]{%`
    Stiamo definendo il comando \nxandlist con quattro argomenti.
    `\def\@andlistc##1{\toks@\@xp{\the\toks@##1}}%`
    L’espansione ridefinisce \@andlistc con un argomento; ogni chiamata di \@andlistc aggiunge al contenuto di \toks@ l’argomento; per esempio, se \toks@ contiene \xxx\yyy, dopo \@andlistc{\zzz} il contenuto di \toks@ sarà \xxx\yyy\zzz
    ` \toks@{\toks@\@emptytoks \@andlista{{#1}{#2}{#3}}}%`
    Inizializziamo il contenuto di \toks@ come scritto; \@emptytoks è un registro token sempre vuoto.
    ` \the\@xp\toks@#4\and\and`
    Emettiamo il contenuto della registro token \toks@ seguito dal quarto argomento (espanso) e da \and\and
    ` \edef#4{\the\toks@}%`
    Ridefiniamo il quarto argomento (che deve essere un comando) come il contenuto di \toks@
    ` \let\@andlistc\@iden}`
    Definiamo \@andlistc come la macro \@iden; la definizione di \@iden è \def\@iden#1{#1}.
    `\def\@andlista#1#2\and#3\and{\@andlistc{#2}\@ifnotempty{#3}{%
    \@andlistb#1{#3}}}`
    Questo non dovrebbe dare problemi: \@andlista ha tre argomenti; il primo non è delimitato, il secondo è delimitato da \and, il terzo anche.
    `\def\@andlistb#1#2#3#4#5\and{%
    \@ifempty{#5}{%
    \@andlistc{#2#4}%
    }{%
    \@andlistc{#1#4}\@andlistb{#1}{#3}{#3}{#5}%
    }}`
    Anche questo non dovrebbe dare problemi. Ora però occorre vedere che succede quando si chiama \nxandlist{a}{b}{c}{\d}. Il registro \toks@ sia vuoto e supponiamo che sia stato dato \def\d{xyz}

    La lista di token che viene sostituita è
    `\def\@andlistc#1{\toks@\@xp{\the\toks@#1}}
    \toks@{\toks@\@emptytoks \@andlista{{a}{b}{c}}}
    \the\@xp\toks@\d\and\and
    \edef\d{\the\toks@}
    \let\@andlistc\@iden`
    e, a questo punto, riparte l’espansione. La definizione di \@andlistc viene memorizzata. Il registro \toks@ assume il valore \toks@\@emptytoks \@andlista{{a}{b}{c}}

    Poi nella lista di token da esaminare viene inserito
    `\toks@\@emptytoks \@andlista{{a}{b}{c}}xyz\and\and`
    e quindi la lista a questo punto è
    `\toks@\@emptytoks \@andlista{{a}{b}{c}}xyz\and\and
    \edef\d{\the\toks@}\let\@andlistc\@iden`
    Occorre espandere \@andlista, i cui argomenti sono #1={a}{b}{c}, #2=xyz e #3 è vuoto. Quindi si trova
    `\@andlistc{xyz}\@ifnotempty{}{\@andlistb{a}{b}{c}{}}`
    L’espansione di \@andlistc è
    `\toks@\@xp{\the\toks@ xyz}`
    Siccome il primo argomento di \@ifnotempty è vuoto, l’espansione è vuota.

    Adesso puoi andare avanti. È chiaro che non succederà sempre così: se l’espansione di \d contiene \and, gli argomenti di \@andlista saranno diversi.

    Ciao
    Enrico

    in risposta a: label testuali #18040
    Up
    0
    Down
    ::

    ciao a tutti, mi interessarebbe fare una cosa del genere:

    `\section{Ciao come stai}\label[Valore etichetta a Ciao come stai]{ciao_come_stai}
    …
    \ref{ciao_come_stai}
    \ref[valore]{ciao_come_stai}`

    nel primo caso si comporta normalmente mentre nel secondo mi ritorna il testo indicato come valore dell’etichetta!

    Esiste qualcosa di già fatto per questo lavoro o devo ridefinire il comando label?

    Be’, sia \label che \ref e parecchie altre cose per scrivere correttamente nel file .aux. Non è affatto semplice. Se trovo un po’ di tempo ci penso.

    Ciao
    Enrico

    in risposta a: Nuova classe: Problema con l’array author #18015
    Up
    0
    Down
    ::

    Non metterei tutti quegli \@addtoreset là. Basta darli una volta per tutte: non ha molto senso farlo localmente.

    Perché non li? per ogni articolo devo reinizializzare i valori delle varie parti ecc.

    Per la questione dell’array in effetti usa authors. Poi provo.

    \@addtoreset{foo}{bar} aggiunge il contatore foo alla lista di azzeramento associata al contatore bar. Così stai semplicemente aggiungendo più volte il contatore alla lista.

    Quando hai dato \@addtoreset{foo}{bar}, ogni comando \stepcounter{bar}, \refstepcounter{bar} e \setcounter{bar} azzera foo. Quindi il codice giusto è
    `\@addtoreset{section}{article}
    \@addtoreset{figure}{article}
    \@addtoreset{table}{article}
    \@addtoreset{equation}{article}
    \@addtoreset{footnote}{article}
    \newcommand\articolo{}
    \def\articolo{%
    \cleardoublepage
    \refstepcounter{article}
    …}
    \def\endarticolo{…}`
    Ho anche tolto quel \newenvironment{articolo}, tanto vale definirsi direttamente \articolo e \endarticolo. Il \newcommand serve per pararsi le spalle nel caso il comando \articolo sia già definito.

    Occhio agli spazi spuri. Per esempio, metterei il comando di cambio pagina prima di tutto, così da trovarsi in modo verticale dove spazi e linee vuote sono ignorati.

    Ciao
    Enrico

    in risposta a: Problemi Bibliografia.. #17974
    Up
    0
    Down
    ::

    Ti ringrazio ancora..

    Allora, ho messo il file nella cartella che mi hai consigliato, ma il problema resta lo stesso.. ti allego il log, poichè avevi ragione.. ci sono degli errori..
    `This is pdfTeX, Version 3.141592-1.40.4 (MiKTeX 2.6) (preloaded format=latex 2007.10.20) 23 OCT 2007 10:42
    entering extended mode
    **C:/Documents*and*Settings/Enrico/Desktop/tarallo/prova.tex
    (“C:\Documents and Settings\Enrico\Desktop\tarallo\prova.tex”
    LaTeX2e <2005/12/01>
    …

    REQ:2:bibtex::prova.aux

    LaTeX Warning: Citation `companion' on page 1 undefined on input line 8.

    LaTeX Warning: Citation `companion' on page 1 undefined on input line 8.

    [1

    ] [2

    ]

    LaTeX Warning: Empty bibliography on input line 10.

    Package biblatex Warning: Please (re)run BibTeX on the file(s):
    (biblatex) prova.aux
    (biblatex) and rerun LaTeX afterwards.

    [3] (prova.aux)

    LaTeX Warning: There were undefined references.

    REQ:1:latex::prova
    )
    Here is how much of TeX's memory you used:
    …`

    Non sono errori. Ti sta semplicemente dicendo di far girare bibtex su prova.aux e di ricompilare due volte con latex.

    Ciao
    Enrico

    in risposta a: Nuova classe: Problema con l’array author #18013
    Up
    0
    Down
    ::

    Certamente scusami.
    Sto cercando di creare una nuova rivista che raccoglie gli articoli del dottorato di ricerca. E’ stato deciso di basarsi sul template di latex della Wiley di Physica Status Solidi.
    Il problema nasce quando si deve comporre la rivista per la stampa finale.
    Ispirandomi al lavoro di ArsTexnica ho creato un enviroment articolo
    `
    \newenvironment{articolo}{%
    \@openarticle}{\@closearticle}
    \def\@openarticle{%

    \refstepcounter{article}
    \@addtoreset{section}{article}
    \@addtoreset{figure}{article}
    \@addtoreset{table}{article}
    \@addtoreset{equation}{article}
    \@addtoreset{footnote}{article}
    \global\let\@author\@empty

    \newpage
    }
    \def\@closearticle{}
    `
    In modo da poter separare gli articoli tra di loro e sfruttare la macro maketitle già esistente. Il problema nasce dal fatto che il tutto funziona discretamente bene a parte la gestione degli autori. Per ogni articolo si ricorda i precedenti e non resetta l’array. Basandomi sulla classe article ho appunto trovato il comando usato ma non funziona.
    Spero di essere stato più chiaro.

    Non metterei tutti quegli \@addtoreset là. Basta darli una volta per tutte: non ha molto senso farlo localmente.

    Quanto al problema di \@author, la definizione usuale di \author è
    `\def\author#1{\gdef\@author{#1}}`
    ma probabilmente la classe su cui ti basi fa qualcos’altro. Indagherei su quello: principalmente sul fatto che usa \@authors (e non \@author), facendo qualche trucchettino per inserire più autori dando più volte \author.

    Ciao
    Enrico

    in risposta a: Problemi Bibliografia.. #17972
    Up
    0
    Down
    ::

    …vi ringrazio.. ma anche colla versione “sicura” non mi funziona.. cioè carica il documento perfettamente, senza errori, però mi cita solo “companion” senza mostrare i dati del libro.. e in bibliografia non appare nulla.. Puo essere che abbia installato male il pacchetto?

    Io l’ho installato come da istruzioni e cioe ho creato la cartella in

    C:\Programmi\MiKTeX 2.6\tex\latex\biblatex

    e ho copiato i file e le cartelle trovati nella cartella “latex” nello zip scaricato.

    L?unico dubbio che mi sorge è la presenza nello zip anche di una cartella bibtex con un file sentro biblatex.bst , che nelle istruzioni non è menzionato..

    Potete darmi ancora una mano?

    Il file biblatex.bst va in C:\Programmi\MiKTeX 2.6\bibtex\bst\biblatex

    Ci saranno anche messaggi durante la compilazione, dovresti darci un’occhiata.

    Ciao
    Enrico

    in risposta a: Nuova classe: Problema con l’array author #18011
    Up
    0
    Down
    ::

    Ispirandomi a una classe già esistente e a quella di ArsTexnica, sto tentando di creare una nuova classe per una nuova rivista che sta nascendo. Il mio problema è che non riesco a reiniziallizare l’array che contiene il nome degli autori.
    Ho provato con
    `
    \global\let\@author\@empty
    `
    ma non sembra funzionare. Mi scuso se la domanda è già stata posta e onn sono stato capace di trovarla sul sito, ma non riesco a venirne fuori neanche consultando i vari libri.

    Alquanto vago. Che cosa vorresti fare, di preciso?

    Ciao
    Enrico

    in risposta a: Classicthesis e hyphenation #13988
    Up
    0
    Down
    ::

    Classicthesis usa il pacchetto soul per realizzare la crenatura nel maiuscoletto.

    Ciao, ho bisogno di una chiarificazione terminologica. Da quello che ho capito, in tipografia la “crenatura” (o “kerning”) non è altro che un “ritocco di spaziatura” (che viene applicato tra certe coppie di lettere nei casi in cui la spaziatura automatica sarebbe insoddisfacente). In effetti, il pacchetto soul premette di realizzare tutta la spaziatura del maisucoletto (crenature comprese).

    Quindi forse quella frase si potrebbe formulare in modo più preciso come

    Classicthesis usa(va) il pacchetto soul per realizzare la spaziatura del maiuscoletto, e questo era la fonte dei problemi di overfull hbox lamentati in questo topic.

    piuttosto che

    Classicthesis usa(va) il pacchetto soul per realizzare la crenatura del maiuscoletto, e questo era la fonte dei problemi di overfull hbox lamentati in questo topic.

    Non direi. La crenatura è quell’aggiustamento che si esegue per avvicinare o allontanare due caratteri a seconda della loro forma. La spaziatura del maiuscoletto si realizza appunto inserendo uno spazio fisso (ma tenendo conto della crenatura positiva o negativa) fra tutti i caratteri.

    La crenatura si fa sempre, la spaziatura a volte no.

    Ciao
    Enrico

    in risposta a: strano testo prima della figura inserita #17992
    Up
    0
    Down
    ::

    risolto: c’era uno spazio nel nome del file e mi sà che latex non lo digerisce.
    Chiedo scusa per l’intervento banale, eventualmente rimuovetelo.

    Grazie ancora, ciao.

    Quasi tutte le distribuzioni permettono di racchiudere il nome tra apici.

    Evita di scrivere esplicitamente l’estensione.

    Ciao
    Enrico

    in risposta a: campi bibliografia incompleti #17982
    Up
    0
    Down
    ::

    Ciao a tutti!
    Spiego meglio: a proposito della scrittura della bibliografia con il pacchetto natbib, ho questo problema: quando scrivo un “item” dove manca qualcuno dei campi predefiniti, si verificano sempre warnings in compilazione e peggio ancora orrendi campi (????) nel documento finale. Non ho capito dalle guide che ho letto come posso fare per evitarlo. Volendo citare ad esempio Wikipedia o questo sito del GuIT avevo pensato di introdurre:
    `@Misc{url:Guit,
    title={Gruppo Utilizzatori Italiani di TeX},
    note={\url{http://www.guit.sssup.it}}
    }

    @misc{url:wiki,
    author = {{AA.VV.}},
    title = {Wikipedia, l'enciclopedia libera},
    note = {Consultabile on-line: \url{http://it.wikipedia.org}, \url{http://en.wikipedia.org}},
    }`
    o qualcosa del genere… Per l’autore spesso si può risolvere con AA.VV. a mio avviso, ma year o howpublished sono campi che non ci stanno per niente!! 😕
    Premetto che i siti cui faccio riferimento sono pochi (non vorrei fare una sitografia apparte, d’altra parte non so come “presentare” qui siti), ma lo stesso problema si può avere per certe pubblicazioni o articoli di cui ho dato incompleti…
    Spero di essermi spiegata. Grazie in anticipo, ciao.

    Se non hai l’anno di pubblicazione, non ha senso un sistema autore-data.

    Usa, in questo caso, lo stile plainnat e \citeauthor invece di \cite.

    Ciao
    Enrico

Stai visualizzando 15 risposte – dal 11,266 al 11,280 (di 13,205 totali)

Go to top▲