egreg9

Risposte nei forum create

Stai visualizzando 15 risposte – dal 3,016 al 3,030 (di 13,205 totali)
  • Autore
    Risposte
  • in risposta a: \pretocmd e argomenti opzionali #64100
    Up
    0
    Down
    ::


    \pretocmd, \apptocmd e \patchcmd non funzionano sui comandi con argomento facoltativo, né sui comandi definiti con \DeclareRobustCommand. Il motivo è un po’ riposto, ma non difficile. Supponiamo di avere
    `\newcommand{\pippo}[2][noccioline]{…}
    \DeclareRobustCommand{\pluto}[1]{…}
    \DeclareRobustCommand{\paperino}[2][313]{…}`
    in ordine crescente di difficoltà. 🙂 Indico con \Xcmd una qualsiasi delle funzioni di etoolbox.

    Nel primo caso il comando che fa il lavoro vero è “\\pippo”, nel senso che il nome del comando è “\pippo” con la barra rovescia in quanto carattere. Dare \Xcmd{\pippo}{…}{}{} non servirebbe a nulla e infatti etoolbox si rifiuta. Occorre agire sul comando “vero”:
    `\expandafter\Xcmd\csname\string\pippo\endcsname{…}{}{}`
    funzionerà perfettamente, perché \csname\string\pippo\endcsname costruisce l’esatto nome che ci serve.

    Secondo caso. Il comando che fa il lavoro vero è “\pluto “, nel senso che il nome del comando ha uno spazio in fondo che fa parte integrante del nome. Soluzione:
    `\expandafter\Xcmd\csname pluto \endcsname{…}{}{}`
    perché \csname pluto \endcsname produce il nome corretto.

    Terzo caso, cioè la somma dei precedenti: il comando su cui agire è “\\paperino “; qui la situazione è un pochino più complessa, perché
    `\csname\string\paperino \endcsname`
    non produce il nome corretto: lo spazio dopo “\paperino” è ignorato! Dunque
    `\expandafter\Xcmd\csname\string\paperino\space\endcsname{…}{}{}`
    Nel tuo caso devi usare
    `\expandafter\pretocmd\csname\string\ambiente\endcsname{\textbf{#1, #2}}{}{}`

    Codice un po’ più generale

    Qui c’è una definizione di \xpatchcmd, \xpretocmd e \xapptocmd che fanno la stessa cosa degli originali, ma si possono applicare a comandi definiti con argomento facoltativo oppure costruiti con \DeclareRobustCommand e anche con \newrobustcmd.
    `\documentclass[a4paper]{article}
    \usepackage{etoolbox}

    \makeatletter
    \def\@X@cmd#1#2{%
    %% Start from scratch: define \@tempc to expand to the candidate command
    \def\@tempc{#2}%
    %% Analyze whether #2 is defined via \DeclareRobustCommand; if it is, and
    %% the command is called \abc, its \meaning is the string “\protect \abc ”
    %% (where spaces are significant)
    \edef\@tempa{\expandafter\strip@prefix\meaning#2}%
    \edef\@tempb{\string\protect\space\string#2\space\space}%
    %% If the two strings are equal, the command was defined by \DeclareRobustCommand
    %% and was a control sequence
    \ifx\@tempa\@tempb
    \message{\string#2 is a LaTeX robust control sequence}%
    \expandafter\@robusttempc#2%
    \fi
    %% In case of \DeclareRobustCommand{\?}{…}, the first level expansion is
    %% different: “\x@protect \?\protect \? ”
    \edef\@tempb{\string\x@protect\space\string#2\string\protect\space\string#2\space\space}
    \ifx\@tempa\@tempb
    \message{\string#2 is a LaTeX robust control symbol}%
    \expandafter\@xrobusttempc#2%
    \fi
    %% In any case, \@tempc expands to the candidate for patching; we need one more
    %% passage if the command has optional arguments; if it has, its first
    %% level expansion is “\@protected@testopt \abc \\abc {}” (where \abc stands for
    %% the command chosen before, which might have final spaces). Since it is the
    %% expansion of \@tempc we get its first level expansion in two steps.
    \edef\@tempa{\expandafter\meaning\@tempc}%
    \edef\@tempa{\expandafter\strip@prefix\@tempa}%
    \edef\@tempb{\string\@protected@testopt\space\string#2\space\space
    \@backslashchar\string#2\space\space\string{\string}}
    %% If the two strings in \@tempa and \@tempb are equal, the command has an
    %% optional argument and was defined with \newcommand.
    \ifx\@tempa\@tempb
    \message{\string#2 has an optional argument}%
    \expandafter\expandafter\expandafter\@optionaltempc\@tempc
    \fi
    %% Commands with an optional argument defined with \newrobustcmd have a different
    %% first level expansion: “\@testopt \\abc {}”
    \edef\@tempb{\string\@testopt\space\@backslashchar\string#2\space\string{\string}}
    \ifx\@tempa\@tempb
    \message{\string#2 has an optional argument}%
    \expandafter\expandafter\expandafter\@eoptionaltempc\@tempc
    \fi
    %% Finally we do the patch (#1 will be either \patchcmd, \pretocmd or \apptocmd
    \expandafter#1\@tempc
    }
    %% In case of a control sequence defined with \DeclareRobustCommand,
    %% the patchable form is the second token in the first level expansion
    \def\@robusttempc#1#2{\def\@tempc{#2}}
    %% In case of a control symbol defined with \DeclareRobustCommand,
    %% the patchable form is the fourth token in the first level expansion
    \def\@xrobusttempc#1#2#3#4{\def\@tempc{#4}}
    %% In case of a control sequence with an optional argument (traditional
    %% LaTeX) the patchable form is the third token in the first level expansion
    \def\@optionaltempc#1#2#3#4{\def\@tempc{#3}}
    %% In case of a control sequence with an optional argument (\newrobustcmd)
    %% the patchable form is the second token in the first level expansion
    \def\@eoptionaltempc#1#2#3{\def\@tempc{#2}}

    \def\xpatchcmd{\@X@cmd\patchcmd}
    \def\xpretocmd{\@X@cmd\pretocmd}
    \def\xapptocmd{\@X@cmd\apptocmd}

    %% Now we define some test commands

    \DeclareRobustCommand{\abc}{abc}
    \DeclareRobustCommand{\abcd}[1][]{abcd}
    \newrobustcmd{\abcde}[2][]{abcde}
    \DeclareRobustCommand\?[1][]{abc?}
    \DeclareRobustCommand{\xyz}{abc}
    \expandafter\def\expandafter\cheat\expandafter{\xyz}

    \tracingpatches
    \xpatchcmd\abc{ab}{AB}{}{}
    \xpatchcmd\abcd{ab}{AB}{}{}
    \xpatchcmd\abcde{ab}{AB}{}{}
    \xpatchcmd\?{ab}{AB}{}{}

    \xpatchcmd\cheat{ab}{AB}{}{}

    \begin{document}
    We should get “AB'' instead of “ab'' except for \verb|\cheat|

    \verb|\abc|: \abc

    \verb|\abcd[x]{y}|: \abcd[x]{y}

    \verb|\abcde|: \abcde{xxx}

    \verb|\?|: \?

    \xapptocmd\?{PIPPO}{}{}

    \verb|\?|: \?

    \verb|\cheat|: \cheat
    \end{document}`
    Non l’ho scritto adesso, sia chiaro. 🙂

    Ciao
    Enrico

    in risposta a: problemi con la gestione delle “floats” in una pagina #64093
    Up
    0
    Down
    ::


    Non è ben chiaro quello che vuoi fare: tre righe di due immagini ciascuna, eventualmente sforando i margini?

    `\begin{figure}
    \centering
    \makebox[\textwidth]{%
    \subfloat[prima]{\includegraphics[scale=0.5]{./images/1}}%
    \qquad
    \subfloat[seconda]{\includegraphics[scale=0.5]{./images/2}}%
    }\\
    \makebox[\textwidth]{%
    \subfloat[terza]{\includegraphics[scale=0.5]{./images/3}}%
    \qquad
    \subfloat[quarta]{\includegraphics[scale=0.5]{./images/4}}%
    }\\
    \makebox[\textwidth]{%
    \subfloat[quinta]{\includegraphics[scale=0.5]{./images/5}}%
    \qquad
    \subfloat[sesta]{\includegraphics[scale=0.5]{./images/6}}%
    }
    \caption{Didascalia}
    \end{figure}`
    Se le sei immagini non stanno in una pagina, è del tutto inutile forzarcele. Ma senza sapere quanto grandi sono veramente e quali siano le tue dimensioni di pagina, è difficile dare giudizi.

    Ciao
    Enrico

    in risposta a: Numerazione pagine #64087
    Up
    0
    Down
    ::

    nadorpatonel” post=63140Ok, grazie Enrico.
    Proverò senz’altro, sperando che passando alla classe book non mi trovi con troppi altri nuovi problemi.

    Difficile: report e book sono quasi identiche, ma book ha \frontmatter, \mainmatter e \backmatter (però non ha abstract, ma si rimedia facilmente, come hai visto).

    Dimenticavo! Benvenuto! ❗ ❗ ❗

    Ciao
    Enrico

    in risposta a: Numerazione pagine #64085
    Up
    0
    Down
    ::

    nadorpatonel” post=63137Salve.
    Mi sto cimentando con latex per la realizzazione della mia tesi di dottorato e dunque sono costretto a numerosi vincoli di stesura.
    Attualmente il mio problema è che non riesco a introdurre la numerazione delle pagine con numeri romani a partire dall’abstract. Di fatto mi trovo davanti a due abstract, il primo in italiano (Sommario) e il secondo in inglese (Abstract). Avrei bisogno che la numerazione delle pagine partisse con numeri romani dal sommario, fino ad estendersi a tutto l’indice. Con l’inizio dei capitoli, tale numerazione passerebbe in numeri arabi ricominciando da 1.
    Credo che il mio problema sia nelle impostazioni nel preambolo. Sto usando una classe “report” e sinceramente vorrei mentenerla per evitare di scontrarmi a dover modificare ulteriori impostazioni nuovamente con altre classi.
    Ho provato ad usare diverse pagestyle prima dell’inizio dell’abstract ma con nessun risultato e se introduco \setcounter{page}, ciò che ottengo è un numero arabo nella pagina precedente e comunque nessun numero nelle due pagine successive relative agli abstract.
    Spero possiate darmi qualche consiglio. Ho provato a cercare ovunque in rete ma finora senza nessun successo
    Grazie per la vostra disponibilità

    Marco

    Usa la classe book.
    `\documentclass[a4paper]{book}
    …
    \newenvironment{abstract}[1][italian]
    {\cleardoublepage\thispagestyle{plain}
    \iflanguage{italian}{}{\selectlanguage{#1}}
    \vspace*{\fill}
    \begin{center}
    \bfseries\abstractname
    \end{center}}
    {\par\vfill}
    …
    \begin{document}
    \frontmatter
    \begin{abstract}
    Questo è il sommario in italiano
    \end{abstract}

    \begin{abstract}[english]
    This is the abstract in English
    \end{abstract}

    \tableofcontents

    \mainmatter
    \chapter{Introduzione}
    …
    \end{document}`
    Invece che \vspace*{\fill} potresti decidere per \vspace*{4cm} o la dimensione che ti pare più adatta, in modo che i due sommari comincino sicuramente alla stessa altezza.

    Vedrai che vivrai meglio.

    Ciao
    Enrico

    in risposta a: uso pacchetto frontespizio #62427
    Up
    0
    Down
    ::

    sps” post=63135Ha funzionato tutto, tranne la possibilità di abbassare le voci relatore e laureando. Forse non ho ben capito il suggerimento che mi hai dato. Poi vorrei leggermente abbassare la voce Laureando rispetto a Relatore, poiché sembrano appaiate.

    All’interno dell’ambiente “frontespizio” scrivi anche \Sottotitolo{\mbox{}\\[2cm]}; questo abbassa certamente i campi con i nomi.

    Laureando e Relatore sono alla stessa altezza; sai perché li vedi sempre uno più in basso dell’altro? Perché chi ha prodotto il frontespizio non aveva idea di come fare a metterli alla pari.

    Ciao
    Enrico

    in risposta a: Nuovo problemino bibliografia (biblatex) #64074
    Up
    0
    Down
    ::

    tom” post=63131Infatti ero io ad aver aperto il topic 😀 grazie della risposta, ha funzionato.

    Scusatemi ma esiste un modo per inserire gli autori in MAIUSCOLETTO? Sarebbe l’ultimo mio problema.

    Occorre sapere come produci la bibliografia: eventuali pacchetti (natbib o biblatex) e stile bibliografico.

    (Ho cancellato i due messaggi inutili.)

    Ciao
    Enrico

    in risposta a: Nuovo problemino bibliografia (biblatex) #64070
    Up
    0
    Down
    ::

    ursusbruno” post=63127grazie mille per la risposta ultra-rapida.
    Purtroppo nun funziona comunque.

    Impossibile. Hai fatto andare di nuovo BibTeX?

    Ciao
    Enrico

    in risposta a: Nuovo problemino bibliografia (biblatex) #64068
    Up
    0
    Down
    ::


    Metti \nocite{*} subito dopo \begin{document}

    Ciao
    Enrico

    in risposta a: uso pacchetto frontespizio #62425
    Up
    0
    Down
    ::

    sps” post=63115Chi mi deve rilegare la tesi mi ha detto che al frontespizio deve mettere dei margini a destra e sinistra di 2.5cm, Come posso fare?
    Poi come posso far scendere le righe di Relatore e candidato(che vorrei cambiare in laureando) di 2cm?

    Per fissare i margini:
    `\Margini{2.5cm}{1.5cm}{2.5cm}{1cm}`
    Nell’ordine si riferiscono a “sinistra, sotto, destra, sopra”.

    Per cambiare “Candidato” in “Laureando”,
    `\NCandidato{Laureando}`

    Per abbassare di due centimetri la tabella con i nomi (chissà poi perché), puoi abusare di \Sottotitolo:
    `\Sottotitolo{\mbox{}\\[2cm]}`
    Ciao
    Enrico

    in risposta a: bizzarro risultato utilizzando ambiente tabular #64064
    Up
    0
    Down
    ::


    È normale, trattandosi di una colonna dichiarata con S. La colonna “l” iniziale non è solo inutile: crea uno spazio orizzontale che sposta la tabella verso destra.

    Il contenuto della prima colonna non va preceduto da &; forse è questo l’equivoco.
    `\begin{tabular}{l*{3}{S}}
    \toprule
    \multicolumn{1}{c}{\vhhs} & \multicolumn{1}{c}{MW} & \multicolumn{1}{c}{$\epsilon^280$} &\multicolumn{1}{c}{Affinity}\\
    \multicolumn{1}{c}{} & \multicolumn{1}{c}{(\si{\dalton})}& \multicolumn{1}{c}{(\si[per-mode=reciprocal]{\per\molar\per\cm})}&\multicolumn{1}{c}{MW} \\
    \midrule
    F10 & 14297,6 & 31525 \\
    …`
    Resta misteriosa la quarta colonna, ma la tabella è tua e non metto lingua. 🙂

    Ciao
    Enrico

    in risposta a: problema biblatex – articoli con più autori #64059
    Up
    0
    Down
    ::

    tom” post=63110allora, ho degli articoli da inserire in bibliografia con molti autori (anche una decina). So che gli autori si inseriscono nel file. bib in questo modo:
    `@article{rossi:articolo,
    author = {Rossi, Mario and Bianchi, Luigi and Verdi, Giuseppe and …},`

    Il problema è che il risultato finale è questo:

    Mario Rossi et al.

    in realtà vorrei che ogni singolo autore sia citato in bibliografia, magari se possibile con il nome puntato (M. invece di Mario), ma TUTTI gli autori dovrebbero comparire, insomma una cosa del genere:

    Rossi M., Bianchi L., Verdi G., …

    è possibile?

    Metti “maxbibnames=10” fra le opzioni di caricamento di biblatex; c’è anche maxcitenames per controllare quanti nomi compaiono nelle citazioni (se di tipo autore-anno). Qui 10 è un numero a caso; se non vuoi correre rischi metti 100. A meno che fra i tuoi lavori non ce ne siano con più di 100 autori. 😮

    Per avere solo le iniziali, l’opzione dovrebbe essere “firstinits=true”.

    Ciao
    Enrico

    in risposta a: Cambio carattere su tabelle e formattazione di base #62597
    Up
    0
    Down
    ::


    Perché ti preoccupi tanto delle tabelle? Inseriscila con
    `\begin{table*}[p]
    \caption{Ecco qui i dati importantissimi}
    \centering
    \medskip
    \begin{tabular}{…}
    …
    \end{tabular}
    \end{table*}`
    e ti verrà messa a tutta pagina. Se per caso ti esce alla fine del capitolo è perché è troppo piccola e allora il modo giusto di operare è di scrivere [tp] invece di [p]. Non si adopera \newpage che in casi davvero eccezionali.

    Togli quel \DeclareGraphicsExtensions che fa solo danni.

    Ciao
    Enrico

    in risposta a: Problema con intestazione #64057
    Up
    0
    Down
    ::

    drjhons” post=63104Nella mia tesi, subito dopo l’indice, ho inserito l’introduzione come capitolo non numerato:

    `\documentclass[a4paper,12pt,titlepage]{book}
    …
    \chapter*{Introduzione}
    \addcontentsline{toc}{chapter}{Introduzione}
    …`

    Dopo la prima pagina di introduzione, l’intestazione in alto di quella seguente non riporta la dicitura “INTRODUZIONE”, bensì “INDICE”. Come posso ovviare al problema senza rendere l’introduzione un capitolo numerato?
    Grazie anticipatamente a tutti coloro che sapranno fornirmi un valido aiuto

    Togli l’asterisco e la riga con \addcontentsline. I capitoli prima di \mainmatter non vengono numerati.

    Ciao
    Enrico

    in risposta a: Caratteri lituani #64041
    Up
    0
    Down
    ::


    A me funziona. Posso solo fare la supposizione che il tuo documento non sia propriamente codificato UTF-8.

    Non ti dà errore alle righe corrispondenti ai comandi \newunicodechar? Perché l’altra supposizione è che tu non abbia messo quelle righe. Infatti in tal caso ottengo
    `Unicode char \u8:<97> not set up for use with LaTeX.
    Unicode char \u8:
    not set up for use with LaTeX.
    Unicode char \u8: not set up for use with LaTeX.
    Unicode char \u8: not set up for use with LaTeX.
    Unicode char \u8:<96> not set up for use with LaTeX.
    Unicode char \u8:
    not set up for use with LaTeX.
    Unicode char \u8: not set up for use with LaTeX.
    Unicode char \u8: not set up for use with LaTeX.`
    Un totale di otto errori.

    Ciao
    Enrico

    in risposta a: [Risolto] Problema con espansione di macro matematiche pgf #64054
    Up
    0
    Down
    ::


    In “\a and 0.8” TeX non vede alcuno spazio fra “1” (valore di \a) e “and”, perché gli spazi dopo i nomi di comandi sono ignorati. Credo che
    `\draw (0,0) ellipse ({\a} and 0.8);`
    funzioni. Anzi, ne sono sicuro perché l’ho provato. 🙂

    Ciao
    Enrico

Stai visualizzando 15 risposte – dal 3,016 al 3,030 (di 13,205 totali)

Go to top▲