egreg9

Risposte nei forum create

Stai visualizzando 15 risposte – dal 46 al 60 (di 13,218 totali)
  • Autore
    Risposte
  • in risposta a: ottenere un numero #121486
    Up
    0
    Down
    ::

    claudio” post=122044Come ottenere un comando che abbia come valore in uscita
    un numero?
    `
    \documentclass[10pt,a4paper]{article}
    \usepackage{amsmath}
    \usepackage{fp}
    \newcommand{\NOP}[1]{
    \FPeval\nnn{(#1)*(-1)}%
    \FPeval\nnn{round(nnn:0)}%
    \nnn
    }

    \begin{document}
    $\NOP{2}$

    $\NOP{-1}$

    $\NOP{\NOP{-1}}$
    \end{document}

    `
    Il comando dato un numero produce il suo opposto. Il problema è che l’uscita non è un numero ma il carattere che rappresenta il numero
    come fare per ottenere un numero?
    grazie
    claudio

    Interi?

    `
    \documentclass{article}

    \NewExpandableDocumentCommand{\NOP}{m}{\inteval{0-(#1)}}

    \begin{document}

    $\NOP{1}$

    $\NOP{\NOP{-1}}$

    $\NOP{1-3+4}$

    \end{document}
    `

    Otterrai [tt]-1[/tt], [tt]-1[tt] e [tt]-2[/tt].

    Virgola mobile?

    `
    \documentclass{article}

    \NewExpandableDocumentCommand{\NOP}{m}{\fpeval{-(#1)}}

    \begin{document}

    $\NOP{1.23}$

    $\NOP{\NOP{-1.23}}$

    $\NOP{1-pi+exp(1)}$

    \end{document}
    `

    Otterrai [tt]-1.23[/tt], [tt]-1.23[/tt] e [tt]−0.576689174869252[/tt].

    Perché non funziona con [tt]fp[/tt]? Perché i comandi di questo pacchetto non sono espandibili.

    Ciao
    Enrico

    in risposta a: Simbolo \vDash #121476
    Up
    0
    Down
    ::

    vsara” post=122041In ambiente matematico il simbolo \vDash produce un simbolo che in un certo senso è orientato da sinistra a destra.
    Qual’è il comando per il corrispondente simbolo orientato da destra a sinistra?

    Alcuni font come [tt]mathabx[/tt] hanno il simbolo, ma cambiano anche tutti gli altri.

    Il modo è semplice.
    `
    \documentclass{article}
    \usepackage{amsmath,amssymb}
    \usepackage{graphicx}

    \makeatletter
    \newcommand{\Dashv}{}% per sicurezza
    \DeclareRobustCommand{\Dashv}{\mathrel{\mathpalette\Dashv@\relax}}
    \newcommand{\Dashv@}[2]{%
    \reflectbox{$\m@th#1\vDash$}%
    }
    \makeatother

    \begin{document}

    $\vDash A$

    $A \Dashv$

    \end{document}
    `

    [attachment=2729]Screenshot2023-02-28at23.58.49.png[/attachment]

    Ciao
    Enrico

    Attachments:
    You must be logged in to view attached files.
    in risposta a: [risolto] Manipolazioni argomento macro #121453
    Up
    0
    Down
    ::


    [tt]\cs_generate_variant:Nn[/tt] NON va nella definizione, ma fuori.

    Ciao
    Enrico

    in risposta a: [risolto] Manipolazioni argomento macro #121452
    Up
    0
    Down
    ::

    MatteoF” post=122011Buongiorno a tutti,
    avrei due esigenze, riguardanti l’analisi / manipolazione di una stringa di testo.

    1) vorrei sapere se esiste un condizionale (kernel [tt]LaTeX[/tt] o pacchetto esterno) che verifichi se l’argomento di una macro inizi o meno con una lettera maiuscola.

    2) inoltre, ho la necessità di rimuovere l’ultimo carattere dell’argomento di una macro, in modo tale che [tt]\foo{Hello World}[/tt] diventi [tt]Hello Worl[/tt].

    Grazie mille,
    Matteo

    Dipende molto da che cosa si intende passare. Se è testo arbitrario in UTF-8 in pdflatex, è piuttosto complesso, ma fattibile. Se assumiamo XeLaTeX o LuaLaTeX, è molto più semplice.
    `
    \prg_new_conditional:Nnn \matteo_if_firstchar_uc:n { p,T,F,TF }
    {
    \str_if_eq:eeTF { \str_head:e { \str_uppercase:n { #1 } } } { \str_head:n { #1 } } { \prg_return_true: } { \prg_return_false: }
    }
    \cs_generate_variant:Nn \str_head:n { e }

    \cs_new:Nn \matteo_remove_last_char:n
    {
    \tl_range:nnn { #1 } { 1 } { -2 }
    }
    `

    Differenze con il tuo codice? Che il condizionale è espandibile, così come la rimozione dell’ultimo carattere.

    Esempio completo:

    `
    \documentclass{article}

    \ExplSyntaxOn

    \prg_new_conditional:Nnn \matteo_if_firstchar_uc:n { p,T,F,TF }
    {
    \str_if_eq:eeTF
    { \str_head:e { \str_uppercase:n { #1 } } }
    { \str_head:n { #1 } }
    { \prg_return_true: }
    { \prg_return_false: }
    }
    \cs_generate_variant:Nn \str_head:n { e }

    \cs_new:Nn \matteo_remove_last_char:n
    {
    \tl_range:nnn { #1 } { 1 } { -2 }
    }

    \NewDocumentCommand{\testUC}{mmm}
    {
    \matteo_if_firstchar_uc:nTF { #1 } { #2 } { #3 }
    }

    \NewExpandableDocumentCommand{\testremove}{m}
    {
    \matteo_remove_last_char:n { #1 }
    }

    \ExplSyntaxOff

    \begin{document}

    \testUC{Hello World}{VERO}{FALSO}

    \testUC{hello world}{VERO}{FALSO}

    \testremove{Hello World}

    \end{document}
    `

    Ciao
    Enrico

    in risposta a: cosa cambia tra \edef e \let? #121474
    Up
    0
    Down
    ::

    mattiaca” post=122036Mi sto documentando un po’ sulle primitive tex per personalizzare qualche macro sopratutto quando utilizzo pgf e tikz per il disegno.
    Leggendo qua e là nella documentazione mi sono imbattuto nelle dichiarazioni in oggetto, ma sinceramente mi sfugge la loro differenza, cioè quando va utilizzata l’una o l’altra.
    Apparentemente \let copia il comando espandendolo proprio come fa edef, o mi sbaglio?
    Ecco un emc:
    `
    \documentclass{article}
    \begin{document}
    \def\a{aaa}
    \edef\b{\a}
    \let\c\a
    \def\d{\a}
    \a \space \b \space \c \space \d \par
    \def\a{ccc}
    \a \space \b \space \c \space \d \par
    \end{document}
    `

    Grazie a chi voglia rispondere a questa apparente banalità.

    Il comando [tt]\let[/tt] non espande nulla.

    Ogni token che abbia un significato corrisponde a una certa area di memoria. I token predefiniti (caratteri e primitive) occupano aree fisse. Quando si definisce una nuova sequenza di controllo (o un carattere attivo), TeX crea due cose: un’area di memoria e un puntatore a quest’area (sto un po’ riassumendo, per non essere troppo tecnico).

    Se si dà [tt]\let=[/tt], TeX semplicemente indirizza il puntatore [tt][/tt] all’area di memoria corrispondente a [tt][/tt]. Se il [tt][/tt] non è definito, non lo sarà nemmeno [tt][/tt].

    Invece [tt]\edef{…}[/tt] crea sia il puntatore sia l’area di memoria. Se [tt][/tt] è già definito, il puntatore è distrutto e ricreato.

    Vediamo un esempio:
    `
    \def\a{esempio}
    \def\b{\a}
    \let\c\b
    \edef\d{\b}
    `
    Ci sono differenze fra [tt]\c[/tt] and [tt]\d[/tt]? Sì, abissali. L’espansione di primo livello di [tt]\c[/tt] è [tt]\a[/tt], quella di [tt]\d[/tt] è [tt]esempio[/tt]: infatti
    `
    \ifx\c\d VERO\else FALSO\fi
    `
    darebbe [tt]FALSO[/tt].

    Mi pare sufficiente per dire che non sono la stessa cosa.

    Ciao
    Enrico

    in risposta a: Comando per distanziare titolo sezione da testo #121311
    Up
    0
    Down
    ::


    Che classe di documento?

    Così la domanda è troppo generica.

    Ciao
    Enrico

    in risposta a: makeindex e lettere accentate #59278
    Up
    0
    Down
    ::


    Usa Xindy

    `
    \documentclass[10pt]{book}
    \usepackage[T1]{fontenc}
    \usepackage[xindy]{imakeidx}
    \makeindex[columns=1,options=-C utf8 -L italian]

    \begin{document}

    ciao\index{arto}

    rete\index{èna}

    remo\index{era}
    \printindex
    \end{document}
    `

    in risposta a: TOP tesi e numerazione subsubsection #121099
    Up
    0
    Down
    ::


    Non me ne voglia Claudio. 😮

    `
    \documentclass{toptesi}

    \begin{document}

    \mainmatter
    \setcounter{secnumdepth}{3}

    \chapter{A}
    \section{B}
    \subsection{C}
    \subsubsection{D}

    \end{document}
    `

    Ciao
    Enrico

    in risposta a: Spazietto nelle formule matematiche #121090
    Up
    0
    Down
    ::

    zippo” post=121609Sapete se c’è una guida che dica tutti i casi in cui è meglio mettere lo spazietto (\,) nelle formule? Pur constatando che in alcuni casi è davvero meglio allargare un po’, è insoddisfacente lasciare la scelta al gusto personale.

    È gusto personale, in molti casi. L’unico dov’è davvero obbligatorio è per separare un’espressione dal simbolo di differenziale (che di solito si risolve definendo un comando apposito per il differenziale).

    Dove lo adopero? Tra un radicale e una parentesi chiusa: la differenza fra
    `
    \mathbb{Q}[\sqrt{2}]\quad\mathbb{Q}(\sqrt{2})
    `
    e
    `
    \mathbb{Q}[\sqrt{2}\,]\quad\mathbb{Q}(\sqrt{2}\,)
    `
    dovrebbe balzare agli occhi.

    [attachment=2703]Screenshot2022-07-10at10.12.48.png[/attachment]

    Non ci sono tanti altri casi, per la verità. Più importante ancora è [tt]\![/tt], per esempio in
    `
    x^2\!/2
    `
    o per gli esponenti a parentesi “grandi” (sopra senza la correzione, sotto con). Nel caso dell’esponente, [tt]^{\!n}[/tt] è certamente più corretto.

    [attachment=2704]Screenshot2022-07-10at10.17.29.png[/attachment]

    Ciao
    Enrico

    Attachments:
    You must be logged in to view attached files.
    in risposta a: Errore amsmath #120937
    Up
    0
    Down
    ::

    oierpa” post=121447Ciao a tutti.
    Come da oggetto riscontro un errore che proprio non so gestire, mentre compilo un semplicissimo file. Il mio problema iniziale era scrivere una formula su più righe perché i termini da sommare sono parecchi.
    L’errore è il seguente:
    Command \iint already defined. …d{\iint}{\DOTSI\protect\MultiIntegral{2}}
    Command \iiint already defined. …{\iiint}{\DOTSI\protect\MultiIntegral{3}}
    Command \iiiint already defined. …\iiiint}{\DOTSI\protect\MultiIntegral{4}}
    Command \idotsint already defined. …dotsint}{\DOTSI\protect\MultiIntegral{0}}
    Command \openbox already defined. \vrule\hfil}}

    Aprendo il file amsmath.sty mi vengono evidenziate le righe seguenti:
    `\ams@newcommand{\iint}{\DOTSI\protect\MultiIntegral{2}}
    \ams@newcommand{\iiint}{\DOTSI\protect\MultiIntegral{3}}
    \ams@newcommand{\iiiint}{\DOTSI\protect\MultiIntegral{4}}
    \newcommand{\idotsint}{\DOTSI\protect\MultiIntegral{0}}`

    L’estratto del mio file è questo:
    `\documentclass[a4paper,twoside,12pt,italian,notitlepage]{report}
    \usepackage[UTF8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage[T1]{fontenc}
    \usepackage{txfonts}
    \usepackage{booktabs}
    \usepackage{tabularx}
    \usepackage{subfig}
    \usepackage{siunitx}
    \usepackage{amsmath}
    \usepackage{amsthm}
    %\usepackage{wasysym}
    \usepackage{graphicx}
    \usepackage{pgfplots}
    \graphicspath{{./immagini/}}
    \usepackage{emptypage}
    \usepackage{booktabs}
    \usepackage{marvosym}
    \usepackage{textcomp}

    \begin{document}
    \section{Paragrafo con formula}
    \[formula=termineA-\Sigma(A + B + C +\\
    D + D + D)\] %l'errore è qui

    \end{document}
    `

    Ora, quello che non capisco è come mai l’errore viene rilevato nel file amsmath.sty che io non ho toccato perché non sono assolutamente in grado di farlo.

    La mia esperienza non è eccelsa, lo ammetto, ma non mi è mai capitato di trovare un errore sul file di un pacchetto.
    Ho provato ad aggiornare i pacchetti e a cambiare un pochino la sintassi della formula così:
    `

    \begin{equation}
    Risultato=A-(B+C+D\\
    +E+F)
    \end{equation}
    `

    Ma la sostanza non cambia, ho gli stessi errori.
    Se invece non carico il pacchetto amsmath, l’errore sparisce ma la formula esce dal foglio.
    Usando il pacchetto wasysym, come ho trovato in un forum, la formula continua ad uscire dal foglio.
    Ho fatto la prova su 2 altri pc, su cui non avevo messo mano precedentemente e trovo lo stesso errore.
    Grazie in anticipo per l’aiuto

    Cominciamo dall’inizio.

    [tt]\usepackage[UTF8]{inputenc}[/tt] è sbagliato. L’opzione sarebbe [tt]utf8[/tt], ma si può omettere il tutto. Da alcuni anni, la codifica UTF-8 è assunta implicitamente.

    [tt]\usepackage{txfonts}[/tt] va sostituito con [tt]\usepackage{newtxtext,newtxmath}[/tt]. Si hanno font migliori e non si ha l’errore di ridefinizione dei comandi.

    Un [tt]\\[/tt] in una formula con
    `
    \[…\]
    `
    NON FUNZIONA né ha MAI funzionato. Con [tt]amsmath[/tt] o senza, non importa.

    [tt]wasysym[/tt] e [tt]marvosym[/tt] vanno caricati se davvero servono, ma non hanno alcuna influenza su come le formule sono composte.

    Per spezzare una formula su due righe si adopera [tt]split[/tt] oppure un altro degli ambienti di allineamento di [tt]amsmath[/tt].

    Ciao
    Enrico

    in risposta a: Definizione nuovo comando: argomenti. #120907
    Up
    0
    Down
    ::


    Non sono proprio la stessa cosa. Con la definizione
    `\newcommand{\ca}{\textit}`
    la macro [tt]\ca[/tt] non cerca alcun argomento, mentre lo fa la macro [tt]\cb[/tt] definita con
    `\newcommand{\cb}[1]{\textit{#1}}`
    Il risultato è che [tt]\cb[/tt] è meno efficiente, perché l’argomento viene cercato due volte. Talvolta, però, l’efficienza è meno importante della chiarezza.

    Ciao
    Enrico

    in risposta a: Parentesi e parole in corsivo: una questione di spaziatura #120805
    Up
    0
    Down
    ::

    Iacobus1983″ post=121322Grazie a tutti e due.


    @samiel
    : grazie dell’idea, non ci avevo pensato – ma temo di non avere il permesso di farlo. Controllerò…


    @OldClaudio
    : grazie, le tue spiegazioni sono come sempre interessanti. C’è una cosa che non capisco bene. La Guida, alla pagina che indichi, sembra indicare che quando si usa il comando (p. es. \emph{}) invece dell’istruzione generica LaTeX “sa” dove inizia e finisce il corsivo, e mette per suo conto la “correzione italica”. Dunque mi verrebbe da pensare che l’idea del comando \/ del TeX originario sia stata in qualche modo “integrata” nel meccanismo di LaTeX. È così?

    Segnalo anche che usando un font odf (BemboBookMTPro) con fontspec e lualatex il comando \/ non ha nessun risultato visibile:

    `(\emph{jf})\\
    (\/\emph{jf}\/)\\
    (\emph{\/jf\/})`

    mi dà

    [attachment=2680]Schermata2022-01-31alle09.25.59.png[/attachment]

    Forse LaTeX non ha a disposizione tutti i dati per calcolare la correzione per quello specifico font?

    Comunque resta la soluzione di aggiungere un po’ di \kern.

    Il comando [tt]\/[/tt] non fa magie. La correzione corsiva della parentesi è probabilmente nulla e il comando non guarda affatto che cosa segue. In un mondo ideale i font OpenType dovrebbero avere una variante stilistica per le parentesi dritte anche in corsivo e potrebbero definire crenature opportune per queste varianti.

    Nel mondo reale non c’è altro da fare che aggiungere manualmente la crenatura. Non ho il font Bembo, ma con Junicode il problema è lo stesso.
    `
    \documentclass{article}
    \usepackage{fontspec}

    \setmainfont{Junicode}

    \begin{document}

    ({\itshape jf}) % nessuna correzione

    (\emph{jf}) % correzione automatica alla fine

    (\,\emph{jf}) % crenatura manuale all'inizio

    \end{document}
    `

    [attachment=2681]Screenshot2022-01-31at12.07.11.png[/attachment]

    Ciao
    Enrico

    Attachments:
    You must be logged in to view attached files.
    in risposta a: è corretto? #120715
    Up
    0
    Down
    ::

    claudio” post=121230Devo scrivere i termini di una successione
    ho provato a scrivere questo codice
    `
    \documentclass[10pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{amsmath}
    \usepackage{amssymb}
    \DeclareMathOperator{\Fi}{F}
    \newcommand{\Fib}[1]{\Fi_{#1}}
    \begin{document}
    \[\Fib{n}=\Fib{n-1}+\Fib{n-2}\]
    \end{document}
    `
    non da errore ma è corretto?

    No, non è un operatore. Se vuoi la lettera “F” in tondo (diritto), definisci semplicemente
    `\newcommand{\Fib}[1]{\mathrm{F}_{#1}}`

    Se vuoi sapere perché non è un operatore, prova
    `
    $2\operatorname{F}_2+2\mathrm{F}_2$
    `
    e scopri la differenza.

    Ciao
    Enrico

    in risposta a: Fare un nuovo simbolo in latex #120688
    Up
    0
    Down
    ::


    Se il simbolo è un = con una linea verticale in mezzo, si può fare con metodi standard.

    `
    \documentclass{article}
    \usepackage{amsmath}

    \makeatletter
    \newcommand{\nuovosimbolo}{\mathrel{\mathpalette\nuovosimbolo@\relax}}
    \newcommand{\nuovosimbolo@}[2]{%
    \vphantom{=}%
    \begingroup
    \sbox\z@{$\m@th#1{=}$}%
    \ooalign{%
    $\m@th#1{=}$\cr
    \hidewidth\nuovosimbolo@vert{#1}\hidewidth\cr
    }%
    \endgroup
    }

    \newcommand{\nuovosimbolo@vert}[1]{%
    \vrule height \ht\z@
    depth -\nuovosimbolo@fix{#1}
    width \nuovosimbolo@thickness{#1}
    }
    \newcommand{\nuovosimbolo@fix}[1]{%
    \dimexpr2\nuovosimbolo@axis{#1}-\ht\z@\relax
    }
    \newcommand{\nuovosimbolo@axis}[1]{%
    \fontdimen22
    \ifx#1\displaystyle\textfont\else
    \ifx#1\textstyle\textfont\else
    \ifx#1\scriptstyle\scriptfont\else
    \scriptscriptfont\fi\fi\fi 2
    }
    \newcommand{\nuovosimbolo@thickness}[1]{%
    \fontdimen8
    \ifx#1\displaystyle\textfont\else
    \ifx#1\textstyle\textfont\else
    \ifx#1\scriptstyle\scriptfont\else
    \scriptscriptfont\fi\fi\fi 3
    }
    \makeatother

    \begin{document}

    $A\nuovosimbolo B$

    $\scriptstyle A\nuovosimbolo B$

    $\scriptscriptstyle A\nuovosimbolo B$

    \end{document}
    `

    L’idea è di sovrapporre, con [tt]\ooalign[/tt] il segno di = con la linea verticale dello stesso spessore (calcolato tramite lo spessore delle linee di frazione nello stile attuale); la linea è alta quanto il segno di uguale, ma togliamo quanto starebbe sotto il segno, supponendo che = sia simmetrico rispetto all’asse delle formule.

    Lo spessore delle linee di frazione è [tt]\fontdimen8[/tt] del font 3 nello stile attuale (large symbols), mentre l’altezza dell’asse delle formule è [tt]\fontdimen22[/tt] del font 2 nello stile attuale.

    [attachment=2669]Screenshot2021-12-14at11.42.13.png[/attachment]

    Ciao
    Enrico

    Attachments:
    You must be logged in to view attached files.
    in risposta a: Fare un nuovo simbolo in latex #120687
    Up
    0
    Down
    ::

    Utente123″ post=121196
    Ti dico solo che ho trovato questo simbolo in un testo originario di Eulero 🙄

    Potresti per favore aggiungere un riferimento o un’immagine per vedere il simbolo e il contesto?

    Ciao
    Enrico

Stai visualizzando 15 risposte – dal 46 al 60 (di 13,218 totali)

Go to top