egreg9

Risposte nei forum create

Stai visualizzando 15 risposte – dal 6,901 al 6,915 (di 13,205 totali)
  • Autore
    Risposte
  • in risposta a: Aumentare il numero dei parametri per \newcommand #41902
    Up
    0
    Down
    ::

    Come si fa ad aumentare il massimo numero di parametri per \newcommand? Ho la beffa di avere un comando che necessita di 12 variabili…

    Comandi del genere sono ingestibili, si possono capire solo in testi che siano generati automaticamente. È il tuo caso?

    Non si può aumentare il massimo numero di parametri: nove sono per decreto knuthiano al quale l’obbedienza dev’essere cieca e assoluta. Trucchi di vario tipo ci sono, ma la prima domanda a cui rispondere è: davvero ti serve un comando con 12 argomenti? Che ci devi fare? La soluzione dipende da questo.

    Ciao
    Enrico

    in risposta a: Inserimento dinamico del percorso del file *.tex nel header #41851
    Up
    0
    Down
    ::

    Non si potrebbe usare kpathsea?

    Sì e no: mettendo
    `\immediate\write18{kpsewhich #1 > temp.ttt}`
    la chiamata \filepath{pippo.tex} scriverebbe, nel file temp.ttt, “./pippo.tex”, se pippo.tex è un file nella directory di lavoro. Invece \filepath{article.cls} scriverebbe “/usr/local/texlive/2009/texmf-dist/tex/latex/base/article.cls”

    Si potrebbe migliorare la macro in modo che scriva anche la directory di lavoro e poi guardi il primo carattere della stringa ottenuta leggendo il file e legga anche la seconda riga se quel primo carattere è “.”
    `\catcode`@=11

    \def\@car#1#2\@nil{#1}
    \def\@gobble#1{}

    \newread\@filepathstream
    \def\filepath#1{%
    \immediate\write18{kpsewhich #1 > \jobname.ttt}%
    \immediate\write18{pwd >> \jobname.ttt}%
    \immediate\openin\@filepathstream=\jobname.ttt
    \read\@filepathstream to\@tempa
    \read\@filepathstream to\@tempb
    \immediate\closein\@filepathstream
    \@computefilepathname}
    \def\@gobblefinalspace#1 \@nil{#1}
    \edef\@PAR@{\string\par}
    \def\@computefilepathname{%
    \edef\@tempa{\detokenize\expandafter{\@tempa}}%
    \edef\@tempa{\expandafter\@gobblefinalspace\@tempa\@nil}%
    \edef\@tempb{\detokenize\expandafter{\@tempb}}%
    \edef\@tempb{\expandafter\@gobblefinalspace\@tempb\@nil}%
    \edef\@tempc{\expandafter\@car\@tempa\@nil}%
    \if\@tempc.%
    \edef\filepathname{\@tempb\expandafter\@gobble\@tempa}%
    \else
    \ifx\@tempb\@PAR@
    \def\filepathname{FILE NOT FOUND}%
    \else
    \let\filepathname\@tempa
    \fi
    \fi}
    \catcode`@=12

    \filepath{moddate.tex}
    [\filepathname]

    \filepath{article.cls}
    [\filepathname]

    \filepath{xun.nin}
    [\filepathname]

    \bye
    `
    In una versione LaTeX si usi \makeatletter e \makeatother, evitando la definizione di \@gobble e di \@car. Le ridefinizioni di \@tempa e di \@tempb servono per buttar via lo spazio che risulta dalla lettura del file: se la prima riga è “./pippo.tex”, per esempio, l’espansione di \filepathnametemp è “./pippo.tex ” (con lo spazio in fondo).

    Adopero \detokenize per neutralizzare eventuali caratteri “pericolosi”; tanto ci serve solo la stringa. L’ultimo condizionale funziona perché, se il file dato come argomento non esiste, ll file temporaneo avrà una sola riga e \@tempb, inizialmente, ha come espansione “\par”.

    Ciao
    Enrico

    in risposta a: Trovare i PDF della doc. dei pacchetti su Mac #40333
    Up
    0
    Down
    ::

    Ho appena scaricato l’ultima versione di TeXShop.
    Schiacciando alt+cmd+i esce una finestra dentro la quale si può scrivere il nome del pacchetto del quale si vuole leggere la documentazione. Non so ce questa funzione sia presente anche nelle precedenti versioni.
    È un’alternativa molto utile a texdoc perché non serve aprire il terminale, e di solito si vuole leggere la documentazione di un pacchetto quando l’editor (TeXShop) è aperto.

    Con Aquamacs Emacs puoi fare così: batti la seguente successione di tasti

    Escape X S H E L L

    (gli spazi sono solo per dividere); in Emacs-speak, “Meta-x shell”; da’ invio. Si aprirà un nuovo buffer che è una shell, cioè il terminale. 🙂

    Molto utile non solo per texdoc; infatti si apre posizionandosi nella directory di lavoro del buffer su cui stavi lavorando e puoi lanciare facilmente compilazioni interattive nel caso quella non interattiva che ottieni con il pulsantino dia errori non facili da individuare.

    Ciao
    Enrico

    in risposta a: TeX Live 2009 e getnonfreefonts #41874
    Up
    0
    Down
    ::

    Ho appena installato MacTeX 2009 e non trovo più traccia dell’applicazione getnonfreefonts, utile per istallare alcuni font come l’URW-garamond, usato dal pacchetto mathdesign. Qualcuno mi può aiutare?

    Non è più incluso, infatti,

    http://tug.org/~kotucha/getnonfreefonts/

    Ciao
    Enrico

    in risposta a: problemi nel compilare file in seguito a nuova installazione #41380
    Up
    0
    Down
    ::

    ciao,
    mi sa che il problema non era li’! C’era una graffa in piu’ ed ora altri errori. Pero’ mi ricordo che compilava; questo è il codice:
    `
    \documentclass[11pt,a4paper]{moderncv}
    \usepackage[USenglish,italian]{babel}
    \moderncvtheme[blue]{classic} % idem
    \usepackage[latin1]{inputenc} % serve per non mettere gli accenti a mano….
    \hypersetup{bookmarks=false, pdfpagemode=None, pdfstartview=FitH, pdffitwindow=true}
    \let\WriteBookmarks\relax
    \usepackage[scale=0.8]{geometry}
    \recomputelengths

    % personal data
    \firstname{**************}
    \familyname{**********}
    \title{Curriculum Vit\ae} \\ \small{\today}

    \begin{document}
    \maketitle
    \vspace{0.8cm}
    ……………………………………..
    `
    gli errori sono:
    – there’s no line here to end (nella line \title )
    – missing \begin{document}

    Qualcuno che gentilmente individua il problema? Rimane mistero come mai compilasse prima della reintallazione

    \title{Curriculum Vit\ae} \\ {\small\today}}

    Manca la graffa di chiusura dell’argomento di \title. Ricordati anche che \small non è un comando con argomenti, ma una dichiarazione.

    Ciao
    Enrico

    in risposta a: Termini inglesi in documento italiano. Al plurale? #41698
    Up
    0
    Down
    ::

    Be’, se volessi includere anche questa cosa, sarebbe il massimo, ma non è indispensabile, perché \straniero{file} lo userei spesso, ma \straniero{File} non riesco a immaginarmi un caso in cui potrebbe essere utile. Forse solo all’inizio di una frase, per giustificare la maiuscola, ma in quel caso lo racchiuderei tra caporali, visto che sarebbe una citazione; altrimenti avrebbe un articolo davanti e quindi tornerebbe in minuscolo.

    File e cartelle sono usatissimi, nei computer di oggi.

    Ciao,
    L.

    In tal caso si potrebbe modificare la definizione precedente di \@straniero:
    `\newcommand{\@straniero}[1]{%
    \uppercase\expandafter{\expandafter\def\expandafter\next\expandafter
    {\detokenize{#1}}}%
    \ifcsname f@reign\next\endcsname
    \@stranierofmt{#1}%
    \else
    \global\expandafter\let\csname f@reign\next\endcsname\relax
    \emph{\@stranierofmt{#1}}%
    \fi}`
    Ciao
    Enrico

    in risposta a: Termini inglesi in documento italiano. Al plurale? #41696
    Up
    0
    Down
    ::

    Che cosa vuoi ottenere, di preciso?

    Vorrei realizzare una versione definitiva del comando, che «fonda» le caratteristiche delle implementazioni discusse in questo topic e nell’altro. In pratica:
    [ul][li] il comando \straniero dovrebbe rendere il suo argomento in corsivo la prima volta che viene chiamato su quello specifico termine e in tondo le volte successive, come nell’implementazione più recente;
    [li] la variante con l’asterisco dovrebbe fare la stessa cosa, ma impedendo la cesura del suddetto termine, come nell’implementazione vista nell’altro topic.[/ul]

    Ovviamente, però, \straniero{File} e \straniero{file} sono considerati diversi; per averli equivalenti il prezzo sale.

    🙂 Be’, se volessi includere anche questa cosa, sarebbe il massimo, ma non è indispensabile, perché \straniero{file} lo userei spesso, ma \straniero{File} non riesco a immaginarmi un caso in cui potrebbe essere utile. Forse solo all’inizio di una frase, per giustificare la maiuscola, ma in quel caso lo racchiuderei tra caporali, visto che sarebbe una citazione; altrimenti avrebbe un articolo davanti e quindi tornerebbe in minuscolo.

    `\makeatletter
    \newcommand{\straniero}{%
    \@ifstar{\let\@stranierofmt\mbox\@straniero}
    {\let\@stranierofmt\@iden\@straniero}}
    \newcommand{\@straniero}[1]{%
    \ifcsname f@reign\detokenize{#1}\endcsname
    \@stranierofmt{#1}%
    \else
    \global\expandafter\let\csname f@reign\detokenize{#1}\endcsname\relax
    \emph{\@stranierofmt{#1}}%
    \fi}`
    Se chiami \straniero{pippo}, il comando \@stranierofmt è \@iden, quindi l’espansione di \@stranierofmt{pippo} è “pippo”. Se chiami \straniero*{pippo} hai \mbox{pippo}.

    Ciao
    Enrico

    in risposta a: Problema testatina, backmatter #41840
    Up
    0
    Down
    ::

    Grazie per la risposta, ad entrambi.

    Un’ulteriore domanda. Nel codice
    `
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    \fancyhf{}
    \fancyhead[R]{\bfseries\nouppercase{\leftmark}}
    \fancyfoot[C]{\thepage}
    \makeatletter
    \renewcommand{\chaptermark}[1]{%
    \markboth{\if@mainmatter\thechapter.\ \fi #1}{}}
    \makeatletter
    \setlength{\headheight}{14pt}
    `
    non si dovrebbe sostituire il secondo \makeatletter con \makeatother, per invertire il catcode di ‘@’ da 11 a 12?

    Era per vedere se stavi attento. 🙂

    Correggo.

    Ciao
    Enrico

    in risposta a: Termini inglesi in documento italiano. Al plurale? #41694
    Up
    0
    Down
    ::

    In definitva, il gioco non vale la candela, secondo me.

    A me non dispiace, ma soprattutto ho la sensazione che potrebbe servire per qualcos’altro, in futuro.

    Ho cercato di integrare il codice con quello dell’altra discussione:
    `\makeatletter
    \newcommand{\straniero}[1]{%
    \ifcsname f@reign\detokenize{#1}\endcsname
    #1%
    \else
    \global\expandafter\let\csname f@reign\detokenize{#1}\endcsname\relax
    \@ifstar{\@stranieros#1}{\@straniero{#1}}%
    \fi}

    \def\@stranieros#1{\foreignlanguage{nohyphenation}{\textit{#1}}}
    \def\@straniero{\textit}
    \makeatother`
    la versione con l’asterisco non funziona, mentre quella normale sembra andare. Purtroppo non so niente di TeX, dovrò decidermi ad approfondire il discorso…

    Che cosa vuoi ottenere, di preciso?

    Ciao
    Enrico

    in risposta a: Inserimento dinamico del percorso del file *.tex nel header #41849
    Up
    0
    Down
    ::

    Buongiorno,
    sto cercando di inserire in maniera dinamica e automatica il percorso del file *.tex nell’header del documento, senza doverlo ridigitare nel momento in cui il percorso cambia. Vorrei fosse il sistema durante la compilazione a mettere il percorso corrente.
    Per il momento la porzione di codice inserita è la seguente:

    \pagestyle{fancy}
    \lhead{\url{HOME}}

    dove al posto di HOME vorrei venisse messo un comando tipo \jobname che inserisca autonomamente il percorso del file e non solo il nome.

    Qualcuno ha qualche idea?
    Grazie

    Giorgio

    `\documentclass[a4paper]{article}

    \newread\filepathstream
    \def\filepath#1{%
    \immediate\write18{echo `pwd`/#1.tex > temp.ttt}%
    \immediate\openin\filepathstream=temp.ttt%
    \immediate\read\filepathstream to\filepathname
    \immediate\closein\filepathstream}

    \usepackage{fancyhdr}
    \pagestyle{fancy}
    \fancyhf{}
    \fancyhead[R]{\ttfamily\filepathname}

    \begin{document}

    \filepath{\jobname.tex}
    abc

    \end{document}`
    Va compilato con l’opzione -shell-escape attiva.

    Ciao
    Enrico

    in risposta a: Problema testatina, backmatter #41838
    Up
    0
    Down
    ::

    Buongiorno!
    Ho un problema con l’header di una sezione, relativa agli acronimi, inserita nel backmatter. Compare il numero del capitolo precedente, nella testatina. Per quale motivo? Segue un testcase.
    `% …`

    Prova con questo, al posto di quello che sta tra \usepackage{fancyhdr} e \setlength{\headheight{14pt}:
    `\usepackage{fancyhdr}
    \pagestyle{fancy}
    \fancyhf{}
    \fancyhead[R]{\bfseries\nouppercase{\leftmark}}
    \fancyfoot[C]{\thepage}
    \makeatletter
    \renewcommand{\chaptermark}[1]{%
    \markboth{\if@mainmatter\thechapter.\ \fi #1}{}}
    \makeatother
    \setlength{\headheight}{14pt}`
    Ciao
    Enrico

    in risposta a: Minion Pro: corsivo e inclinato identici? #41676
    Up
    0
    Down
    ::

    OT: cos’è l’inclinato? Perché si usa quando è così simile al corsivo?

    È una forma del carattere in voga da un paio di decenni. Direi che si deve adoperare l’uno o l’altro.

    Ciao
    Enrico

    in risposta a: enumerate #41834
    Up
    0
    Down
    ::

    Grazie, funziona perfettamente.
    Mi spieghi come funziona?

    Volentieri. Vista la domanda, ho cercato in giro e ho trovato una “soluzione” che consisteva nel fare “a occhio” quello che invece si può impostare con precisione; ed ecco la soluzione:
    `\newcommand\flag{%
    \settowidth{\dimen@}{\@nameuse{label\@enumctr}\hskip\labelsep}%
    \makebox[0pt][r]{*\,\kern\dimen@}}`
    Occorre sapere che, appena LaTeX incontra il comando \item in un ambiente enumerate, fa scattare il contatore e quindi l’espansione del comando \labelenumi (\labelenumii, \labelenumiii oppure \labelenumiv) è l’etichetta che viene posta davanti all’elemento della lista. Fra l’etichetta e il testo viene posto uno spazio di ampiezza \labelsep.

    Come fa LaTeX a conoscere quale fra i quattro “\labelenumX” deve usare? A ogni livello di annidamento ne viene usato uno; al momento di \begin{enumerate} viene definito \@enumctr con espansione “enumi”, “enumii”, “enumiii” oppure “enumiv”. Con \@nameuse{label\@enumctr} è come se usassi \labelenumi, se \@enumctr si espande a “enumi”, e lo stesso negli altri casi.

    A questo punto si può capire che fa \flag. La prima cosa è impostare \dimen@ all’ampiezza di “\labelenumi” (ma può essere \labelenumii, eccetera, se siamo a un livello di annidamento superiore) seguita da uno spazio \labelsep. Poi il trucco finale: inseriamo una box larga zero con allineamento al bordo destro: quindi il contenuto della box sporgerà sulla sinistra rispetto al punto in cui la box viene composta; il contenuto è proprio il segnale (l’asterisco), seguito da un piccolo spazio di separazione e, infine, uno spazio dell’ampiezza calcolata prima che ci permette di “saltare” l’etichetta.

    Ci sono limitazioni: funziona solo se l’etichetta è, come nel caso standard di LaTeX, anche usando il pacchetto “enumerate”. composta a filo della separazione \labelsep. Se dovessi usare enumitem, occorre fare attenzione a come viene posta l’etichetta nello spazio che viene riservato. Seconda limitazione: \flag fa entrare in modo orizzontale, quindi un eventuale \begin{enumerate} che seguisse \item\flag andrebbe alla riga successiva.

    Ciao
    Enrico

    in risposta a: enumerate #41832
    Up
    0
    Down
    ::

    Ho letto sulla “Breve guida” le note di Enrico sul pacchetto in oggetto e sui suoi fratelli enumitem e paralist che permette di fare diverse belle cose.
    Non ho però trovato come si può fare ad evidenziare (per esempio con un simbolo qualsiasi o con un font diverso) le label solo di alcuni item.

    Un possibile ‘uso che mi viene in mente potrebbe essere quello di evidenziare, in una lista di esercizi, quelli più difficili..

    Non c’entra enumerate; da’ un’occhiata a enumitem, in ogni caso. Il codice seguente dovrebbe funzionare con entrambi.
    `\makeatletter
    \newcommand\flag{%
    \settowidth{\dimen@}{\@nameuse{label\@enumctr}\hskip\labelsep}%
    \makebox[0pt][r]{*\,\kern\dimen@}}
    \makeatother`
    Per avere un \item con l’asterisco, scrivi \item\flag:
    `\begin{enumerate}
    \item $1+1$
    \item\flag $1+2$
    \end{enumerate}`
    Ciao
    Enrico

    in risposta a: Suggerimenti per compilazione e stampa. #41820
    Up
    0
    Down
    ::

    Mi rivolgo principalmente agli utenti esperti e avanzati 🙂
    Uso Windows XP, MiKTex, TeXnicCenter…
    1) qual è secondo voi il migliore programma per compilare un file .tex con PDFLatex?
    2) E per la fase di stampa?
    Conviene tenere lo stesso o due differenti per ciascuna fase?

    Grazie per i vostri preziosi suggerimenti.

    Se uno è esperto e avanzato, per prima cosa butta via Windoze. 😆

    Scusa, ma non potevo esimermi. 😉

    Ciao
    Enrico

Stai visualizzando 15 risposte – dal 6,901 al 6,915 (di 13,205 totali)

Go to top▲