- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 6 mesi fa da .
-
Topic
-
Michel Goossens (che qualcuno potrebbe ricordare come uno degli autori del LaTeX Companion) in questo documento spiega che i simboli delle particelle fisiche andrebbero scritti sempre diritti e non in corsivo matematico come quasi sempre si legge negli articoli. Per facilitare il compito degli autori di articoli scientifici allora ha realizzato un pacchetto chiamato [tt]heppenames2[/tt] (reperibile a questo indirizzo) basato sul pacchetto [tt]heppennames[/tt] presente su CTAN (purtroppo non mi sembra però che [tt]heppennames2[/tt] sia su CTAN).Il pacchetto [tt]heppenames2[/tt] non fa altro che includere il codice del pacchetto [tt]upright[/tt] per produrre le lettere greche minuscole diritte utilizzando qualsiasi font. Tuttavia alcuni font (io conosco fourier, kpfonts) fornisco le lettere greche minuscole diritte e mi piacerebbe rendere il pacchetto [tt]heppenames2[/tt] “compatibile” con questi due font nel senso che se questi due pacchetto sono caricati in un documento vengano utilizzate le lettere fornite dai due pacchetti. Ho fatto la seguente modifica al pacchetto (ovviamente cambiandogli nome) sfruttando un utilissimo comando suggerito qui da egreg9. In pratica al posto del codice del pacchetto [tt]upgreek[/tt] ho messo il seguente codice
`\@ifpackageloaded{kpfonts}
{
\newcommand{\upalpha}{\alphaup}
\newcommand{\upbeta}{\betaup}
\newcommand{\upgamma}{\gammaup}
\newcommand{\updelta}{\deltaup}
\newcommand{\upepsilon}{\epsilonup}
\newcommand{\upzeta}{\zetaup}
\newcommand{\upeta}{\etaup}
\newcommand{\uptheta}{\thetaup}
\newcommand{\upiota}{\iotaup}
\newcommand{\upkappa}{\kappaup}
\newcommand{\uplambda}{\lambdaup}
\newcommand{\upmu}{\muup}
\newcommand{\upnu}{\nuup}
\newcommand{\upxi}{\xiup}
\newcommand{\uppi}{\piup}
\newcommand{\uprho}{\rhoup}
\newcommand{\upsigma}{\sigmaup}
\newcommand{\uptau}{\tauup}
\newcommand{\upupsilon}{\upsilonup}
\newcommand{\upphi}{\phiup}
\newcommand{\upchi}{\chiup}
\newcommand{\uppsi}{\psiup}
\newcommand{\upomega}{\omegaup}\newcommand{\upvarepsilon}{\varepsilonup}
\newcommand{\upvartheta}{\varthetaup}
\newcommand{\upvarpi}{\varphiup}
\newcommand{\upvarrho}{\varrhoup}
\newcommand{\upvarsigma}{\varsigmaup}\newcommand{\Upgamma}{\Gammaup}
\newcommand{\Updelta}{\Deltaup}
\newcommand{\Uptheta}{\Thetaup}
\newcommand{\Uplambda}{\Lambdaup}
\newcommand{\Upxi}{\Xiup}
\newcommand{\Uppi}{\Piup}
\newcommand{\Upsigma}{\Sigmaup}
\newcommand{\Upupsilon}{\Upsilonup}
\newcommand{\Upphi}{\Phiup}
\newcommand{\Uppsi}{\Psiup}
\newcommand{\Upomega}{\Omegaup}
}
{
\@ifpackageloaded{fourier}
{
\newcommand{\UP}[1]{\csname\ifsloped other\fi#1\endcsname}\newcommand{\upalpha}{\UP{alpha}}
\newcommand{\upbeta}{\UP{beta}}
\newcommand{\upgamma}{\UP{gamma}}
\newcommand{\updelta}{\UP{delta}}
\newcommand{\upepsilon}{\UP{epsilon}}
\newcommand{\upzeta}{\UP{zeta}}
\newcommand{\upeta}{\UP{eta}}
\newcommand{\uptheta}{\UP{theta}}
\newcommand{\upiota}{\UP{iota}}
\newcommand{\upkappa}{\UP{kappa}}
\newcommand{\uplambda}{\UP{lambda}}
\newcommand{\upmu}{\UP{mu}}
\newcommand{\upnu}{\UP{nu}}
\newcommand{\upxi}{\UP{xi}}
\newcommand{\uppi}{\UP{pi}}
\newcommand{\uprho}{\UP{rho}}
\newcommand{\upsigma}{\UP{sigma}}
\newcommand{\uptau}{\UP{tau}}
\newcommand{\upupsilon}{\UP{upsilon}}
\newcommand{\upphi}{\UP{phi}}
\newcommand{\upchi}{\UP{chi}}
\newcommand{\uppsi}{\UP{psi}}
\newcommand{\upomega}{\UP{omega}}\newcommand{\upvarepsilon}{\UP{varepsilon}}
\newcommand{\upvartheta}{\UP{vartheta}}
\newcommand{\upvarpi}{\UP{varphi}}
\newcommand{\upvarrho}{\UP{varrho}}
\newcommand{\upvarsigma}{\UP{varsigma}}\newcommand{\Upgamma}{\UP{Gamma}}
\newcommand{\Updelta}{\UP{Delta}}
\newcommand{\Uptheta}{\UP{Theta}}
\newcommand{\Uplambda}{\UP{Lambda}}
\newcommand{\Upxi}{\UP{Xi}}
\newcommand{\Uppi}{\UP{Pi}}
\newcommand{\Upsigma}{\UP{Sigma}}
\newcommand{\Upupsilon}{\UP{Upsilon}}
\newcommand{\Upphi}{\UP{Phi}}
\newcommand{\Uppsi}{\UP{Psi}}
\newcommand{\Upomega}{\UP{Omega}}
}
{
\message{Declaring upgreek from Symbol scaled 90\%}
\DeclareFontFamily{U}{fsy}{}
\DeclareFontShape{U}{fsy}{m}{n}{<->s*[.9]psyr}{}
\DeclareSymbolFont{ugrf@m}{U}{fsy}{m}{n}
\DeclareMathSymbol{\upalpha}{\mathord}{ugrf@m}{`a}
\DeclareMathSymbol{\upbeta}{\mathord}{ugrf@m}{`b}
\DeclareMathSymbol{\upgamma}{\mathord}{ugrf@m}{`g}
\DeclareMathSymbol{\updelta}{\mathord}{ugrf@m}{`d}
\DeclareMathSymbol{\upepsilon}{\mathord}{ugrf@m}{`e}
\DeclareMathSymbol{\upzeta}{\mathord}{ugrf@m}{`z}
\DeclareMathSymbol{\upeta}{\mathord}{ugrf@m}{`h}
\DeclareMathSymbol{\uptheta}{\mathord}{ugrf@m}{`q}
\DeclareMathSymbol{\upiota}{\mathord}{ugrf@m}{`i}
\DeclareMathSymbol{\upkappa}{\mathord}{ugrf@m}{`k}
\DeclareMathSymbol{\uplambda}{\mathord}{ugrf@m}{`l}
\DeclareMathSymbol{\upmu}{\mathord}{ugrf@m}{`m}
\DeclareMathSymbol{\upnu}{\mathord}{ugrf@m}{`n}
\DeclareMathSymbol{\upxi}{\mathord}{ugrf@m}{`x}
\DeclareMathSymbol{\uppi}{\mathord}{ugrf@m}{`p}
\DeclareMathSymbol{\uprho}{\mathord}{ugrf@m}{`r}
\DeclareMathSymbol{\upsigma}{\mathord}{ugrf@m}{`s}
\DeclareMathSymbol{\uptau}{\mathord}{ugrf@m}{`t}
\DeclareMathSymbol{\upupsilon}{\mathord}{ugrf@m}{`u}
\DeclareMathSymbol{\upphi}{\mathord}{ugrf@m}{`f}
\DeclareMathSymbol{\upchi}{\mathord}{ugrf@m}{`c}
\DeclareMathSymbol{\uppsi}{\mathord}{ugrf@m}{`y}
\DeclareMathSymbol{\upomega}{\mathord}{ugrf@m}{`w}
\let\upvarepsilon\upepsilon
\DeclareMathSymbol{\upvartheta}{\mathord}{ugrf@m}{`J}
\DeclareMathSymbol{\upvarpi}{\mathord}{ugrf@m}{`v}
\let\upvarrho\uprho
\let\upvarsigma\upsigma
\DeclareMathSymbol{\upvarphi}{\mathord}{ugrf@m}{`j}
\DeclareMathSymbol{\Upgamma}{\mathord}{ugrf@m}{`G}
\DeclareMathSymbol{\Updelta}{\mathord}{ugrf@m}{`D}
\DeclareMathSymbol{\Uptheta}{\mathord}{ugrf@m}{`Q}
\DeclareMathSymbol{\Uplambda}{\mathord}{ugrf@m}{`L}
\DeclareMathSymbol{\Upxi}{\mathord}{ugrf@m}{`X}
\DeclareMathSymbol{\Uppi}{\mathord}{ugrf@m}{`P}
\DeclareMathSymbol{\Upsigma}{\mathord}{ugrf@m}{`S}
\DeclareMathSymbol{\Upupsilon}{\mathord}{ugrf@m}{`U}
\DeclareMathSymbol{\Upphi}{\mathord}{ugrf@m}{`F}
\DeclareMathSymbol{\Uppsi}{\mathord}{ugrf@m}{`Y}
\DeclareMathSymbol{\Upomega}{\mathord}{ugrf@m}{`W}
}
}`
La modifica sembra fare il suo dovere, però vorrei dei consigli texnici: è corretta? C’è qualcosa di migliorabile? Non sono sicuro che i comandi vadano definiti con [tt]\newcommand[/tt], magari sarebbe meglio qualcos’altro. Inoltre ho dei dubbi sull’organizzazione, per così dire, di questa porzione di codice: ci sono degli if annidati, ma l’aggiunta di un nuovo pacchetto (se ne trovassi altri) richiederebbe aggiungere un nuovo if ancora più annidato, non so se ci sia qualcosa di più efficiente.
- Devi essere connesso per rispondere a questo topic.