Risposte nei forum create
-
AutoreRisposte
-
18 Febbraio 2012 alle 10:28 in risposta a: Ripetizione di una parte di testo (abstract o simile) #70116::
rudycol” post=69302Più chiaro e semplice non potevi essere. Funziona. Perfetto.
Grazie mille Enrico.
Be’, adesso però una piccola spiegazione si può dare. \NewEnviron{ambiente} definisce un ambiente che fa una cosa molto semplice: raccoglie tutto quanto c’è fino fra \begin{ambiente} e \end{ambiente} (dopo aver memorizzato gli eventuali argomenti) e lo mette a disposizione come \BODY per il codice che si dà come secondo argomento obbligatorio di \NewEnviron. Perciò diamo come argomento di “tieniin” la macro che vogliamo far diventare equivalente al testo dell’ambiente.
In realtà si può fare in modo più semplice, in questo caso:
`\NewEnviron{tieniin}[1]{\global\let#1\BODY}`
Ciao
Enrico
18 Febbraio 2012 alle 9:44 in risposta a: Ripetizione di una parte di testo (abstract o simile) #70114::rudycol” post=69297Salve a tutti, ritorno sul forum per chiedere un consiglio:
visto che tante riviste richiedono che venga allegata un cover page che sicuramente andrà perduta dopo l’invio ai referee, sarebbe saggio ripetere titolo e abstract nella pagina successiva prima dell’introduzione.
C’è la possibilità di scrivere l’abstract tipo:
\begin{ambiente_per_ripete_testo}\comando_label_text1
\begin{abstract}
XXXXXX
\end{abstract}\end{ambiente_per_ripete_testo}
e poi quando voglio io, richiamare la porzione di testo con \comando_ref_text1
Si potrebbe certo fare copia incolla, ma ogni volta che faccio una modifica dovrei ripetere l’operazione.
Grazie.
`\usepackage{environ}
\NewEnviron{tieniin}[1]{\long\expandafter\gdef\expandafter#1\expandafter{\BODY}}…
\begin{tieniin}{\myabstract} % nel preambolo, ma anche nel documento
\begin{abstract}
testo
\end{abstract}
\end{tieniin}…
\begin{document}
\myabstract
…
\myabstract`
Ciao
Enrico
::antonio.macrì” post=69285
– Precisazione –
ovviamente la sezione compare coi numeri minuscoli, ma invece di apparire ad esempio (2.10) compare così: (2>10)Siccome il problema è la codifica del punto ‘.’ nel font dei numeri minuscoli, non basterebbe fare:
`\labelformat{section}{\S\oldstylenums{\arabic{chapter}}.\oldstylenums{\arabic{section}}}
\labelformat{chapter}{\S\S\oldstylenums{#1}} % questo rimane lo stesso`
? (Lo chiedo agli esperti :))Al secondo argomento di [tt]\labelformat[/tt] viene passato “the#1”, che ha un contenuto generalmente noto: quindi ignoro l’argomento e considero il contenuto “noto” di per sé.
Resta il problema del font: \oldstylenums usa il font matematico.
Ciao
Enrico
::nery” post=69281
No, così non può funzionare. E il risultato, oltre ad avere il >, ha anche i numeri in un font diverso.
Il pacchetto pslatex è davvero obsoleto. Se vuoi usare Times come font del documento, ti consiglio \usepackage{tgtermes}, ma naturalmente non hai i font matematici. Non esiste, attualmente, un modo decente di avere Times per la matematica. Ci sarebbero i txfonts, ma la resa non è delle migliori. Oppure i font mathtime che richiedono un’installazione manuale.
In ogni caso i numeri minuscoli con Times sono una contraddizione storico-tipografica, perché sono nati con i numeri maiuscoli e aggiungere quelli minuscoli è un obbrobrio.
Ciao
EnricoOk, ammettiamo che questa soluzione faccia schifo (e ovviamente non posso mantenerla visto che esce quel triangolino. Ma volessi per sbaglio riprodurre lo stesso di quello che vedo ne L’Arte di srivere con LaTeX di Pantieri e Gordini, come faccio? Lì i numeri sono tutti minuscoli! vabbeh, se non si può avere quell’effetto mi metto il cuore in pace…
\usepackage[sc,osf]{mathpazo}
Ciao
Enrico
::ansys” post=69279I font mathptmx come sono?
Ottimi, se vuoi un risultato pessimo.
ansys” post=69279Attualmente uso Math Times Professional II, ma vanno installati manualmente (come avete detto).
Non mi sono mai piaciuti tantissimo, ma forse sono condizionato dall’aver visto veramente solo la prima versione e con stampanti a bassa risoluzione.
Ciao
Enrico
::nery” post=69270
\oldstylenums{1234567890}
Ma forse è meglio se dai qualche spiegazione in più.
Ok, ora posso svelare l’arcano: ho voluto modificare lo stile col quale vengono visualizzati capitoli/sezioni ecc., ad esempio scrivendo
\labelformat{section}{\S\oldstylenums{#1}}ecco. Ora il problema che sorge è: al posto del punto compare il triangolo con punta a destra…
se può aiutare, ma non credo che c’entri qualche cosa, il mio header è sì fatto:`\documentclass[a4paper,12pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{pslatex}\usepackage{layaureo}
\usepackage{varioref}
\labelformat{section}{\S\oldstylenums{#1}}
\labelformat{chapter}{\S\S\oldstylenums{#1}}\usepackage{amsmath}
\usepackage{amssymb}\usepackage{graphicx}
\usepackage{subfig}
\usepackage{float}
\usepackage{cancel}\usepackage{tabularx}
\usepackage{url}
\usepackage{caption}
\usepackage{rotating}
\usepackage{fancyhdr}
\usepackage[table,dvipsnames,hyperref]{xcolor}
\usepackage{hyperref}
\hypersetup{colorlinks, citecolor=black, filecolor=black, linkcolor=BlueViolet, urlcolor=black}`No, così non può funzionare. E il risultato, oltre ad avere il >, ha anche i numeri in un font diverso.
Il pacchetto pslatex è davvero obsoleto. Se vuoi usare Times come font del documento, ti consiglio \usepackage{tgtermes}, ma naturalmente non hai i font matematici. Non esiste, attualmente, un modo decente di avere Times per la matematica. Ci sarebbero i txfonts, ma la resa non è delle migliori. Oppure i font mathtime che richiedono un’installazione manuale.
In ogni caso i numeri minuscoli con Times sono una contraddizione storico-tipografica, perché sono nati con i numeri maiuscoli e aggiungere quelli minuscoli è un obbrobrio.
Ciao
Enrico
::OldClaudio” post=69265Ho preferito usare etoolbox e i suoi comandi; il codice ora credo che senza un solo expandafter sia molto più leggibile.
Ma, qui ci vuole un grazie speciale di origine serendipica per Enrico: con le sue osservazioni mi ha costretto a rimeditare ogni piccolo dettaglio di quel che avevo fatto:i \addto (come per altro anche g@addto@macro, se non sbaglio) aggiungono il comando in coda al testo sostitutivo, non all’inizio, quindi la definizione che avevo fatto forse funzionava per miracolo o per errori che si compensavano, ma conteneva un errore logico.
Ora impacchetto il tutto ed eseguo l’upload su CTAN, questa volta il comando robusto \em non è stato minimamente toccato ma è stato toccato il comando con lo spazio in coda al suo nome.
Grazie di cuore, Enrico.
Prima o dopo cambia poco: la parte “em originale” che rimane è tutta di assegnazioni e non ha alcuna influenza sulla composizione del capoverso, per quanto riguarda spazi e penalità. A te interessa che fra la “elle apostrofo” e la parola seguente ci sia \nobreak\hspace{0pt}. Che sia prima o dopo il cambiamento di font non ha alcuna importanza.
Ciao
Enrico
::rick187″ post=69247Salve a tutti.
Ho cercato sul forum ma pare sia l’unico ad avere questo problema.
Ho bisogno di citare il nome di alcuni marchi registrati nel mio testo, ma ho un problema con la spaziatura orizzontale.
Ho definito i seguenti comandi\newcommand{\regtm}{\textsuperscript{\textregistered}}
\newcommand{\nvidia}{Nvidia\regtm}ma il risultato è che la parola Nvidia(R) viene sempre attaccata a quella successiva. In altre parole latex non inserisce né spazi né ritorni a capo dopo la R.
Ho provato anche in questo modo\newcommand{\regtm}{\textsuperscript{\textregistered} } (spazio tra le due graffe)
\newcommand{\nvidia}{Nvidia\regtm}ma il risultato è che lo spazio viene inserito sempre, anche se la parola è seguita da un carattere di punteggiatura.
Qualcuno sa come aiutarmi?
Grazie!Riccardo
Molto semplice: prendi una qualsiasi guida e nelle prime pagine scoprirai che basta scrivere
`\nvidia{}`
Ciao
Enrico
::OldClaudio” post=69243Enrico, in teoria (e in pratica, solo quasi, però) hai ragione, ma a me risulta che nel file aux il comando \emph appia scritto benissimo, così come nel file toc.
D’altra parte l’utente non dovrebbe mi usare la dichiarazione \em ma il comando \emph per i noti motivi.Però l’esperimento con il francese ([tt]\usepackage[english, romansh,italian,french, catalan]{babel}[/tt]) e l’inserimento di [tt]\show\em[/tt] prima di [tt]\begin{document}[/tt] e dopo il cambio di ciascuna delle altre lingue mi mostra sempre:
`
\show\em
?
> \em=macro:
->\protect \em \hz .
`
Tranne che prima di [tt]\begin{document}[/tt] dove manca [tt]\hz[/tt], ma solo lì.Il codice potrebbe essere migliorato secondo quanto hai suggerito e lo farò di certo, ma per l’uso comune non vengono espanse macro due volte e non si manifestano inconvenienti di sorta con il francese, per lo meno io non sono riuscito a riprodurre i tuoi esempi.
A parte “romansh” che non ho, confermo che, quando c’è il francese fra le lingue caricate, \hz non c’è (con \show\em subito dopo \begin{document}). C’è dopo un comando \selectlanguage{italian}.
La scusa che \em non va usato non regge. 🙂 Il rischio del circolo vizioso rimane.
Ti allego la versione LaTeX3:
`\RequirePackage{expl3}
\ExplSyntaxOn
\cs_new_protected:Npn \hz { \nobreak \hskip \c_zero_skip }
\cs_set_eq:Nc \flh_ori_em: { em ~ }
\tl_set:No \l_tmpa_tl { \flh_ori_em: }
\tl_put_right:Nn \l_tmpa_tl { \hz }
\exp_args:NNV \cs_set:Npn \flh_new_em: { \l_tmpa_tl }
\clist_map_inline:nn { catalan , french , italian , romansh }
{
\cs_if_exist:cT { captions #1 }
{
\tl_put_right:cn { extras #1 } { \flh_set_new_em: }
\tl_put_right:cn { noextras #1 } { \flh_set_ori_em: }
}
}
\cs_new:Npn \flh_set_new_em: { \cs_set_eq:cN { em ~ } \flh_new_em: }
\cs_new:Npn \flh_set_ori_em: { \cs_set_eq:cN { em ~ } \flh_ori_em: }
\ExplSyntaxOff`
Le idee sono esattamente le stesse. La cosa più interessante, secondo me, è il ciclo che è molto più leggibile: la funzione \clist_map_inline:nn esegue un ciclo su ogni elemento della lista data come primo argomento e l’elemento viene messo a disposizione del codice da eseguire nel secondo argomento come #1. Niente \@tempa da espandere (non nel vostro caso, perché la usate dentro \csname, ma in altre occasioni è necessario). \cs_if_exist:nT è come \@ifundefined, ma si può dare solo l’argomento del caso “vero”; esistono naturalmente anche \cs_if_exist:cTF e \cs_if_exist:cF.Come si vede, gli spazi sono del tutto ignorati e aumentano la leggibilità del codice. Per darne uno reale si usa ~.
Anche \exp_args:NNV è interessante. NN indica che si devono saltare i due comandi successivi e la V dice che al terzo posto ci deve essere, tra graffe, una variabile (nel caso \l_tmpa_tl) di cui si usa il valore (per una variabile token list è la sua espansione di primo livello). L’analogo tradizionale
`\expandafter\let\expandafter\flh@new@em\expandafter{\@tempa}`
è molto meno leggibile.
Ciao
Enrico
::mattmich” post=69230
[quote=”mattmich” post=69020]Ciao a tutti, ho bisogno di scrivere un CV da inviare per un dottorato italiano e non ho molto tempo. Per ragioni estetiche ero intenzionato a scriverlo in latex, cosa mi consigliate?Dite che è meglio utilizzare il formato europeo (a me, onestamente, non piace esteticamente, per me è orrido)?
Eventualmente ditemi quale pacchetto usereste (io non sono molto pratico di latex quinid più semplice è il pacchetto da utilizzare, meglio è)…
grazie a tutti
ciaoPacchetto curvita: ti permette di produrre un curriculum elegante in pochissimo tempo.
Comunque per questo pacchetto, c’è un manuale per capire come si usa?
Grazie mille[/quote]
Se hai la TeX Live basta “texdoc currvita” dalla linea di comando. Nella distribuzione è compreso il file cvtest.tex che dovresti riuscire a trovare. Su un sistema Unix è in/usr/local/texlive/2011/texmf-dist/doc/latex/currvita/cvtest.tex
Ciao
Enrico
::antonio.macrì” post=69213
Correggimi se sbaglio: [tt]\hskip[/tt] forza il passaggio al modo orizzontale; nel testo normale si è già in modo orizzontale (tranne all’inizio di un capoverso), per cui [tt]\ifhmode[/tt] è vero, mentre i titoli sono composti in modo verticale ([tt]\ifhmode[/tt] falso). Perché titlesec impone che si rimanga in modo verticale (come fa)?Non è che imponga che si rimanga in modo verticale: semplicemente emette un errore se non lo si è. L’argomento in questione potrebbe contenere comandi di spaziatura o filetti o altro materiale verticale che ovviamente non può essere inserito se si è già in modo orizzontale (forzerebbe una fine capoverso).
Ciao
Enrico
::OldClaudio” post=69212Hai provato con il pacchetto (e la sua documentazione) FiXLtxHyph?
[Su TexLive da un mesetto almeno]Il modo di modificare \em che usate è scorretto perché \em è definito con \DeclareRobustCommand (o equivalente). Quindi il comando giusto da modificare non è \em, ma \csname em \endcsname che nel seguito indicherò con \em§ (la § sta per “spazio”).
Vediamo un po’. Voi date
`\let\originalem\em
\let\newem\em
\addto\newem{\hz}`
Se la lingua è fra le quattro dichiarate, succede che passando a una di queste viene eseguito
`\let\em\newem`
La chiamata di \em eseguirà
`\protect\em§\hz`
e, nel caso in cui \em compaia in un \write, nel file verrà scritto
`\em \nobreak\hskip\z@skip`
che, quando il file sarà riletto eseguirà due volte \hz, una dalla nuova espansione di \em e l’altra del codice scritto nel file.Un comando robusto non va mai modificato con \let. Si rischia molto di andare in un circolo vizioso. Se proprio volete seguire questa strada, usate \LetLtxMacro del pacchetto letltxmacro.
Questa è una versione un pochino più sicura:
`\newcommand\hz{\nobreak\hskip\z@skip}
%%% keep the inner version of \em
\expandafter\let\expandafter\FLH@ori@em\csname em \endcsname
%%% patch it
\let\FLH@new@em\FLH@ori@em
\g@addto@macro\FLH@new@em{\hz}
%%% cycle through the supported language
\def\@tempa{catalan,french,italian,romansh}
\@for\@tempb:=\@tempa\do{
\@ifundefined{captions\@tempb}{}
{
\expandafter\g@addto@macro\csname extras\@tempb\endcsname{\FLH@setnew@em}
\expandafter\g@addto@macro\csname noextras\@tempb\endcsname{\FLH@setori@em}
}
}
%%% helper macros
\def\FLH@setnew@em{\expandafter\let\csname em \endcsname\FLH@new@em}
\def\FLH@setori@em{\expandafter\let\csname em \endcsname\FLH@ori@em}`Naturalmente vi sarete accorti che il pacchetto non fa quello che deve se fra le lingue chiamate con babel c’è il francese (per i soliti motivi). Quindi è certamente meglio aggiungere in coda
`\AtBeginDocument{\@nameuse{extras\bbl@main@language}}`
in modo da correggere questo “piccolo” difetto. Infatti
`\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[french,italian]{babel}
\usepackage{fixltxhyph}
\begin{document}
\show\em
\end{document}`
produce
`> \em=macro:
->\protect \em .`
mentre, togliendo “french”, si ottiene
`> \em=macro:
->\protect \em \hz .`
come vorreste.Ciao
Enrico
::Marcello” post=69205Ciao a tutti e complimenti per il Forum! Vi scrivo per chiedervi un consiglio sulla scrittura di un sistema di equazioni, ad esempio:
`\begin{equation}
\left\{
\begin{array}{ll}
\textrm{La velocità di attrito} & u_{\ast} = \sqrt{\frac{\tau_0}{\rho}} \\
\textrm{La temperatura di attrito} & \theta_{\ast} = \frac{-H_0}{\rho C_p u_{\ast}} \\
\textrm{La lunghezza di \textsc{Monin-Obukhov}} & L = \frac{u_{\ast}^2}{\kappa \left( g/ T_0 \right) \theta_{\ast}}
\end{array}
\right.
\end{equation}`che però mi viene compilato in modo tale che le formule (e i simboli che queste contengono) sono piccole piccole! Sto cercando un modo per compilare lo stesso sistema, vale a dire con due colonne (la breve frase descrittiva e poi la formula) e con il numero di formula a lato (quindi non voglio usare displaymath), che però mi permetta di visualizzare bene e a dimensione normale le formule! Qualcuno mi saprebbe aiutare?
Grazie mille in anticipo!
`\usepackage{amsmath}
…
\begin{equation}
\left\{
\begin{aligned}
&\text{La velocità di attrito} & u_{\ast}& = \sqrt{\dfrac{\mathstrut\tau_0}{\rho}} \\
&\text{La temperatura di attrito} & \theta_{\ast} &= \frac{-H_0}{\rho C_p u_{\ast}} \\
&\text{La lunghezza di \textsc{Monin-Obukhov}} & L &= \frac{u_{\ast}^2}{\kappa ( g/ T_0 ) \theta_{\ast}}
\end{aligned}
\right.
\end{equation}`
Con aligned hai essenzialmente quanti allineamenti vuoi del tipo “rlrlrlrl” e così si possono facilmente allineare anche i segni di =. Hai anche il vantaggio che il materiale viene composto in “displaystyle”, quindi le frazioni vengono grandi. Solo all’interno della radice è necessario usare \dfrac per forzare la maggiore grandezza.Il \mathstrut serve perché la radice non si schiacci troppo sulla \tau. Sono raffinamenti che si possono introdurre guardando il risultato.
La coppia \left( \right) è del tutto inutile e anzi dannosa. Usa \left e \right con moderazione e solo quando servono davvero.
Ciao
Enrico
::antonio.macrì” post=69199Ma probabilmente ne esistono di migliori. 🙂
Probabilmente
`\makeatletter
\DeclareRobustCommand\itshape
{\ifhmode\penalty\@M\hskip\z@skip\fi\not@math@alphabet\itshape
\mathit\fontshape\itdefault\selectfont}
\makeatother`
ammesso che si voglia proprio ridefinire \itshape per risolvere un problema inesistente. Una combinazione “apostrofo+parola in corsivo” è certamente una rarità e qui si sta usando un cannone per il moscerino.Ancora meglio:
`\usepackage{xpatch}
\makeatletter
\xpretocmd{\itshape}{\ifhmode\penalty\@M\hskip\z@skip\fi}
\makeatother`
ma chi non ha una distribuzione aggiornata non ha xpatch.Nota per Ivan: introdurre una penalità 10000 ogni volta che si passa al corsivo non mi sembra una buona idea. Vero che uno spazio davanti a questa penalità può essere usato per spezzare una riga senza penalità. Non sono sicuro che in situazioni particolari la penalità sia innocua.
Ciao
Enrico
-
AutoreRisposte