- Questo topic ha 13 risposte, 7 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 6 mesi fa da
OldClaudio.
-
CreatoreTopic
-
24 Febbraio 2012 alle 9:07 #70294::
Ciao,
inserendo molte formule con simboli quasi sempre dotati di pedice, in modalità matematica scrivo:
`S_\mathrm{pedice}`
non creo volentieri nuovi comandi per queste situazioni preferendo essere la maggior parte delle volte “plain”, tuttavia il numero di questi simboli è notevole, dunque ho pensato ad un comando specifico con argomenti delimitati, molto semplice:
`\def\sym#1_#2;{#1_\mathrm{#2}}`
da usare così per esempio:
`\( \sym V_S,30; \)`Si deve solo premettere la command sequence \sym e terminare con ; il simbolo, naturalmente in ambiente matematico.
Cosa ne pensate?
Esiste una soluzione ancora più essenziale e minimale?
Grazie.
-
CreatoreTopic
-
AutoreRisposte
-
-
24 Febbraio 2012 alle 16:40 #70295::
Tempo fa avevo chiesto una cosa simile. Chiedevo se fosse possibile fare
in modo che con il normale underscore avessi un pedice in corsivo, mentre
con un doppio underscore avessi un pedice in tondo.
Mi rispose Enrico ma ora non riesco a trovare la conversazione, in ogni caso
c’erano degli effetti collaterali, la cosa non era così semplice.Io ho definito due comandi da usarsi così:
`S\rb{V} S\rp{V}`
dove \rb{…} sta per roman subscript e \rp{…} per roman superscript.La definizione è (l’ho copiata da sapthesis, magari sostituisci i providecommand con dei def o simili)
`% roman subscript
\providecommand*{\rb}[1]{\ensuremath{_\mathrm{#1}}}
% roman superscript
\providecommand*{\rp}[1]{\ensuremath{^\mathrm{#1}}}
`
Ciao ciao.
Fra
-
24 Febbraio 2012 alle 17:03 #70296
-
24 Febbraio 2012 alle 17:16 #70297
-
24 Febbraio 2012 alle 18:05 #70298::
\ap e \ped funzionano solo se stai componendo in italiano; se stai componendo in inglese o i qualche altra lingua, non sono disponibili, ma se ne copi le definizioni dalla descrizione dell’italiano per babel (italian.ldf) aggiustando un po’ le cose li puoi avere sempre disponibili per tutti i tuoi documenti, copiandone semplicemente il codice da un documento all’altro.
-
24 Febbraio 2012 alle 22:13 #70299::
francesco.biccari” post=69519[…] Mi rispose Enrico ma ora non riesco a trovare la conversazione […]
Credo fosse questa.
PS: forse qualcuno storcerà il naso, ma qualche volta ho pensato di usare una notazione di questo tipo:
`x^{i} % apice corsivo
x^ % apice dritto
x_{i} % pedice corsivo
x_ % pedice dritto`Intuitivamente, le parentesi quadre sono “più dritte” di quelle graffe. Perdonate l’analogia… 🙂
In ogni caso non credo che possano sorgere problemi di ambiguità. Per come stanno le cose di norma, [tt]x_[/tt] metterebbe a pedice solo la parentesi: del tutto senza senso (direi). Inoltre, con la ridefinizione che ho proposto, anche [tt]x_{}[/tt] continuerebbe a fare il suo lavoro.
Ciao,
Antonio
-
25 Febbraio 2012 alle 1:29 #70300
-
25 Febbraio 2012 alle 9:36 #70301::
francesco.biccari” post=69542Mi piace molto questa idea delle parentesi quadre e graffe!
Hai già scritto del codice?
`\makeatletter
\mathcode`_=\string”8000
\catcode`_=\active
\def_{\@ifnextchar[\ItOrUp@mathrm\sb}
\def\ItOrUp@mathrm[#1]{\sb\mathrm{#1}}
\@makeother\_
\makeatother
…
$a_{x}a_[ciao]$`
Ciao
Enrico
-
25 Febbraio 2012 alle 14:17 #70302::
Fantastico Enrico! 🙂Volendo anche gli apici posso modificare così?
`\makeatletter
\mathcode`_=\string”8000
\catcode`_=\active
\def_{\@ifnextchar[\ItOrUp@sb@mathrm\sb}
\def\ItOrUp@sb@mathrm[#1]{\sb\mathrm{#1}}
\@makeother\_\mathcode`^=\string”8000
\catcode`^=\active
\def^{\@ifnextchar[\ItOrUp@sp@mathrm\sp}
\def\ItOrUp@sp@mathrm[#1]{\sp\mathrm{#1}}
\@makeother\^
\makeatother`Sono andato a braccio, ma sembra funzionare.
Grazie!
-
25 Febbraio 2012 alle 14:53 #70303::
antonio.macrì” post=69559Fantastico Enrico! 🙂
Volendo anche gli apici posso modificare così?
`\makeatletter
\mathcode`_=\string”8000
\catcode`_=\active
\def_{\@ifnextchar[\ItOrUp@sb@mathrm\sb}
\def\ItOrUp@sb@mathrm[#1]{\sb\mathrm{#1}}
\@makeother\_\mathcode`^=\string”8000
\catcode`^=\active
\def^{\@ifnextchar[\ItOrUp@sp@mathrm\sp}
\def\ItOrUp@sp@mathrm[#1]{\sp\mathrm{#1}}
\@makeother\^
\makeatother`Sono andato a braccio, ma sembra funzionare.
Grazie!
È identico, quindi funziona. Sconsiglio vivamente entrambi. 🙂
Ciao
Enrico
-
25 Febbraio 2012 alle 21:48 #70304
-
25 Febbraio 2012 alle 22:21 #70305::
Non ho verificato nel kernel di LaTeX, ma una volta scrivere il nome di un file che contenesse un underscore provocava errori a causa del suo codice di categoria; ora non sembra succedere più, ma certamente, l’underscore cambia categoria in diversi punti dell’esecuzione di varie macro.Io allora cercherei di rendere locale il cambio di categoria e scriverei:
`
\AtBeginDocument{\mathcode`_=\string”8000}
{\catcode`_=\active
\gdef_{\@ifnextchar[\ItOrUp@sb@mathrm\sb}}
\def\ItOrUp@sb@mathrm[#1]{\sb\mathrm{#1}}
`
e analogamente per gli apici; eviterei \@makeatother\_ perché il lavoro l’ha già fatto il gruppo; la definizione \gdef è come \def, ma è globale e trascende il gruppo; ovviamente funziona solo quando _ è un carattere attivo, quindi solo in matematica.
-
25 Febbraio 2012 alle 22:50 #70306::
OldClaudio” post=69576Non ho verificato nel kernel di LaTeX, ma una volta scrivere il nome di un file che contenesse un underscore provocava errori a causa del suo codice di categoria; ora non sembra succedere più, ma certamente, l’underscore cambia categoria in diversi punti dell’esecuzione di varie macro.
Io allora cercherei di rendere locale il cambio di categoria e scriverei:
`
\AtBeginDocument{\mathcode`_=\string”8000}
{\catcode`_=\active
\gdef_{\@ifnextchar[\ItOrUp@sb@mathrm\sb}}
\def\ItOrUp@sb@mathrm[#1]{\sb\mathrm{#1}}
`
e analogamente per gli apici; eviterei \@makeatother\_ perché il lavoro l’ha già fatto il gruppo; la definizione \gdef è come \def, ma è globale e trascende il gruppo; ovviamente funziona solo quando _ è un carattere attivo, quindi solo in matematica.Il problema dell’underscore non legale nei nomi dei file si presenta quando è attivo. Con le mie macro non lo è. Il nucleo di LaTeX non cambia mai il codice di categoria di _, che io sappia, eccetto per definirne l’azione nel caso sia “math active”, cioè abbia mathcode “8000, definendolo come [tt]\_[/tt]; ma la mia definizione annulla questa.
Naturalmente il codice di categoria cambia in un ambiente verbatim, ma è un’altra faccenda.
In ogni caso, affinché la faccenda funzioni l’underscore deve avere codice di categoria 12 (oppure 11, ma questo è proprio meglio di no). Se gli lasci codice di categoria 8, il suo significato come “math active” non viene mai usato.
Ciao
Enrico
-
26 Febbraio 2012 alle 14:05 #70307::
In ogni caso, affinché la faccenda funzioni l’underscore deve avere codice di categoria 12 (oppure 11, ma questo è proprio meglio di no). Se gli lasci codice di categoria 8, il suo significato come “math active” non viene mai usato.
Questo fatto proprio mi sfuggiva; e il fatto che abbia proposto il mio codice segnal che l’ho scritto ma non l’ho collaudato; se l’avessi fatto, mi sarei reso conto da solo che c’era qualcosa sotto che mi sfuggiva; grazie Enrico, come sempre.
Ciao
Claudio
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.