- Questo topic ha 15 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 9 anni, 1 mese fa da
Alice.
-
CreatoreTopic
-
25 Luglio 2017 alle 7:50 #110998::
Buongiorno, avrei bisogno della definizione dei simboli $ e $$ necessari per aprire e chiudere una formula. Dove posso trovarla?
Utilizzando texdef ho trovato questa: \long macro:->\ifmmode \mathdollar \else \textdollar \fi, ma non riesco ad utilizzarla con gli effetti desiderati all’interno di un \newcommand o un \newenvironment.. dunque mi chiedo se effettivamente sia la definizione corretta.Grazie mille
-
CreatoreTopic
-
AutoreRisposte
-
-
25 Luglio 2017 alle 10:00 #110999::
Buongiorno, avrei bisogno della definizione dei simboli $ e $$ necessari per aprire e chiudere una formula. Dove posso trovarla?
Utilizzando texdef ho trovato questa: \long macro:->\ifmmode \mathdollar \else \textdollar \fi, ma non riesco ad utilizzarla con gli effetti desiderati all’interno di un \newcommand o un \newenvironment.. dunque mi chiedo se effettivamente sia la definizione corretta.Grazie mille
Ciao.
Meglio che tu spieghi cosa vuoi ottenere e il codice che hai scritto, perché i dollari si usano per le formule in linea ($) o in display ($$) in sorgente nel fomato plain di TeX.
Considera la macro \ensuremath eventualmente.
R.
-
25 Luglio 2017 alle 11:23 #111000::
ho bisogno di ridefinire la struttura $..$, dunque mi serve la definizione di $ per non cadere in un percorso circolare.
In particolare vorrei scrivere una cosa del tipo:\newenvironment{ciao}{definizione modificata di $}%
{%
definizione modificata di $}
%
\protected\def$#1${\begin{ciao}#1\end{ciao}}
%ora provo a guardare se \ensuremath può fare al caso mio, grazie!
-
25 Luglio 2017 alle 11:26 #111001::
Ho bisogno di ridefinire la struttura $…$, dunque vorrei la definizione di $ per non cadere in un percorso circolare.
In particolare vorrei scrivere una cosa del tipo:
\newenvironment{ciao}{definizione modificata di $}{definizione modificata di $}
%
\protected\def$#1${\begin{ciao}#1\end{ciao}}ora provo a guardare se \ensuremath fa al caso mio, grazie!
-
25 Luglio 2017 alle 12:35 #111002::
alice.r” post=111297Ho bisogno di ridefinire la struttura $…$, dunque vorrei la definizione di $ per non cadere in un percorso circolare.
In particolare vorrei scrivere una cosa del tipo:
\newenvironment{ciao}{definizione modificata di $}{definizione modificata di $}
%
\protected\def$#1${\begin{ciao}#1\end{ciao}}ora provo a guardare se \ensuremath fa al caso mio, grazie!
Si d’accordo, ma perché e come vuoi modificare la definizione di $?
Non mi è mai capitato di sentire una cosa del genere.
Immagino invece che il tuo problema si possa risolvere in altra via.
In altre parole qualcosa mi sfugge…
R.
-
26 Luglio 2017 alle 5:52 #111003::
ho bisogno di lavorare sul file di struttura del pdf compilato (per capirci, quello che ottengo aprendo il pdf con notepad++, ad esempio), in modo da creare/aggiungere automaticamente un’etichetta del tipo /ActualText(..) ogni volta che viene inserita una formula con il comando $..$ (oppure $$..$$) nel file .tex.
ecco perchè ho bisogno di ridefinire il comando $..$. so come aggiungere l’etichetta, ma mi manca la definizione di $ per non cadere in una struttura circolare.
spero di essere stata abbastanza chiara..grazie
ciao!
-
26 Luglio 2017 alle 7:48 #111004::
alice.r” post=111302ho bisogno di lavorare sul file di struttura del pdf compilato (per capirci, quello che ottengo aprendo il pdf con notepad++, ad esempio), in modo da creare/aggiungere automaticamente un’etichetta del tipo /ActualText(..) ogni volta che viene inserita una formula con il comando $..$ (oppure $$..$$) nel file .tex.
ecco perchè ho bisogno di ridefinire il comando $..$. so come aggiungere l’etichetta, ma mi manca la definizione di $ per non cadere in una struttura circolare.
spero di essere stata abbastanza chiara..grazie
ciao!Capito!
Questa discussione ti può aiutare?
https://tex.stackexchange.com/questions/119713/making-equations-copyable-in-pdf/119718#119718R.
-
26 Luglio 2017 alle 7:54 #111005::
Il dollaro non è un carattere attivo che ha ricevuto una definizione, quindi non esiste una definizione del dollaro come strumento par delimitare una espressione maematica.In compenso esistono gli ambienti math e displaymath per produrre gli effetti di $…$ e $$…$$.
Ma, mentre il semplice dollaro, carattere speciale di categoria (se ricordo bene 7, ma non è importante; l’importante è che esso è uno dei 10 caratteri speciali del linguaggio nativo dell’interprete TeX, pdfTeX, XeTeX, LuaTeX, e credo anche di ConTeXt) viene usato abitualmente al osto dei comandi LaTeX \(…\) che fanno la stessa cosa come del resto l’ambiente math, e, rispettivamente i comandi \[…\] che fanno la stessa cosa degli ambienti displaymath ed equation* (quest’ultimo definito dal pacchetto amsmath), i delimitatori $$…$$ sono esecrati o deprecati, perché impediscono di usare i pacchetti di matematica avanzata.
Quindi il tuo problema di scrivere [tt] \begin{ciao} formula \end{ciao} [/tt] è già risolto usando [tt] \begin{math} formula \end{math} [/tt].Se invece il tuo scopo è un altro, confesso di non averlo capito nemmeno con le spiegazioni che hai fornito a Roberto.
-
26 Luglio 2017 alle 10:58 #111006::
grazie mille per il suggerimento! purtroppo però non mi porta alla soluzione dei miei problemi per diverse ragioni:
1.\begin{math}formula\end{math} è un “sinonimo” di $..$ nel senso che mi produce gli stessi effetti. Il mio obiettivo però non è ottenere gli stessi effetti di $..$ con altre formulazioni, bensì arricchire il codice di $..$ in modo che l’effetto grafico sul file .pdf resti immutato, ma nel file struttura del pdf compaia automaticamente un’etichetta del tipo \ActualText.
2.usare l’ambiente math per arricchire il $..$ non è possibile; dal file ltmath.dtx sappiamo che vale:
\let\math=\(
\let\endmath=\)
e ancora:
\DeclareRobustCommand\({%
\relax\ifmmode\@badmath\else$\fi}%
\DeclareRobustCommand\){%
\relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}%
dunque il “simbolo madre” da cui si sviluppano tutte le altre definizioni è il $.
3.l’idea è quella di arricchire un metodo molto usato per inserire le formule (penso che la struttura $..$ sia più utilizzata rispatto a \(..\) oppure \begin{math}..\end{math}), non quella di creare un comando “nuovo” che fa cosa voglio, ma che non è molto usato o addirittura sconosciuto.Vi ringrazio comunque per l’aiuto!
(nel frattempo ho forse trovato una soluzione ai miei problemi)
-
26 Luglio 2017 alle 15:39 #111007::
ma nel file struttura del pdf compaia automaticamente un’etichetta del tipo \ActualText.
Incontro per la prima volta n utente che vuole mettere informazioni nella struttura del file PDF. Più che leggerne la documentazione texdoc pdftex non saprei cosa dire.
Quello che mi preme aggiungere che a seocnda di quello che si vuol fare bisogna leggere la documentazione pertinente.
Per esempio il fatto che l’ambiente math sia sconosciuto ai più dipende dal fatto che i più non leggono la documentazione, in questo caso il manuale di Latex di Leslie Lamport, che si trova anche tradotto e commentato nella sezione Documentazione di questo forum.
Purtroppo la parola “Documentazione” scoraggi i più, che non vanno nemmeno a vedere che cosa c’è già disponibile.Potrei anche aggiungere che se lo scopo è quello di creare un “Tagged PDF” il programma di composizione da usare sarebbe ConTeXt, di cui i più non conoscono nemmeno il nome.
Non voglio accanirmi contro i più…:smile: perché il sistema TeX è talmente vasto che anche coloro che lo usano da almeno 30 ani, come me, non ne conoscono che una minima parte. Non mi elenco fara i più, perché la prima cosa che faccio io è sempre quella di documentarmi bene, ma se non ho tempo o voglia di farlo, non uso le funzionalità che non conosco. Piuttosto mi creo da solo le macro che mi servono, ma non è una pratica che consiglierei a nessno, se non a coloro che sono espsrtissimi dei linguaggi di base.
Concludendo, mi fa molto piacere che tu abbia trovato una soluzione per questo intervento sulla struttura del file PDF. Se ce la comunichi qui sul forum faresti un piacere a molti frequentatori, compresi i vecchi orsi brontoloni come me.
-
27 Luglio 2017 alle 7:05 #111008::
ora che ho fatto qualche prova in più e che ho visto che le cose funzionano, ve la comunico volentieri!
non ho fatto altro che seguire il suggerimento fornito dall’utente Egreg al seguente link https://tex.stackexchange.com/questions/59980/can-i-redefine-the-dollar in unione ai comandi \BeginAccSupp e \EndAccSupp del pacchetto accsupp.sty
ciao!
-
27 Luglio 2017 alle 15:05 #111009
-
27 Luglio 2017 alle 22:15 #111010::
Se hai letto la risposta di @egreg, avrai anche letto che non c’è garanzia che il metodo funzioni in tutte le circostanze; anzi, io riformulerei la frase in modo ancora più drastico: è praticamente garantito che in alcune circostanze non funzionerà. Per esempio, non funzionerà con tutti i comandi e ambienti per produrre matematica che sono già definiti nel nucleo del LaTeX o in pacchetti come amsmath, i quali incorporano nelle loro rispettive definizioni dei caratteri [tt]$[/tt] di categoria 3 (math shift), che è staticamente fissata e non cambia dinamicamente.In altre parole, se il motivo per cui ti riproponi addirittura di ridefinire un comando primitivo del TeX (ovvero uno di quelli che, nell’intento di far comprendere meglio cosa essi rappresentino, io talvolta chiamo i «comandi di livello macchina») è quello di intercettare, appunto a livello primitivo, tutti i brani composti in modo matematico, sono totalmente scettico circa la possibilità che quel metodo ti permetta di ottenere quanto voluto. Comunque, farai a tutti noi un graditissimo favore se continuerai a tenerci aggiornati sull’andamento del tuo lavoro! 🙂
Ciao.
—
Gustavo
-
28 Luglio 2017 alle 7:46 #111011::
Anch’io ho letto tutto il thread che hai linkato nel tuo messaggio.
In realtà ammiro @egreg che sa manipolare qualunque token a suo piacimento; infatti non sapevo che si potesse dare una definizione ad un carattere di categoria 3 come il dollaro.
Tuttavia è evidente lche le due definizioni \def$..${…} e \def$$…$${…} non possono coesistere.
Se ti servono tutte e due, credo che tu possa ridefinire \def\(…\){…} con la definizione che avevi dato al singolo dollaro e \def\[…\]{…} con la definizione data al doppio dollaro. In questo modo non interferiscono e dovrebbero produrre il risultato voluto in uscita.Prenderei quel che ho detto con la dovuta cautela, perché siamo a livello di esperimenti che potrebbero non funzionare.
D’altra parte il problema di trasformare un file LaTeX in un file XML, se questo è il tuo caso, è un problema difficile e affrontato (io direi con successi variabili) in diversi modi. Uno sarebbe quello di usare il programma del sistema TeX che si chiama tex4htm usando le opzioni opportune da linea di comando. Un altro potrebbe essere quello di installare e poi usare il programma pandoc (cerca in rete); questo programma da usarsi da linea di comando con le debite opzioni è in grado di trasformare un file da un formato all’altro’ i formati che accetta in entrata sono una trentina, e quelli che può produrre in uscita sono una cinquantina. Fra questi non c’è il formato XML, ma i formati html e html5 che potrebbero rappresentare un’utile via di mezzo per passare al formeto XML, con un po’ di lavoro manuale. Interessante è il fatto che per operare traforma il file in entrata nel formato markdown e poi trasforma questo nel formati di uscita.; con opportune opzioni nel markdown si può inserire anche la matematica, marcata coi dollari semplici o doppi, ma che in qualche modo riesce a gestire con html, ma che come tali possono essere un semplice passaggio intermedio per essere trasformati n codice MathXML.
Prendi sempre cum grno salis quanto ti ho detto, perché il non ho mai eseguito trasformazioni di questo genere, in quanto non mi piace lavorare con programmi che producono file di uscita con formati che non conoscono il concetto di “pagina”; saranno comodissimi per lavorare in internet, ma sono per me orrendi quando si stampa. Ognuno ha i suoi gusti, e come tutti io ho i miei; ovviamente non pretendo che siano condivisi.
-
29 Luglio 2017 alle 8:31 #111012::
Cara @alice.r, ho ricollegato questa discussione a quella che iniziasti qualche tempo fa, e credo, ora, di comprendere meglio il tuo intento: tu vorresti automatizzare l’inserimento dell’annotazione, senza dipendere dal fatto che l’utente finale adoperi un comando come [tt]\pdftool[/tt] (vedi la discussione appena richiamata).Ebbene, la tecnica suggerita nella risposta di @egreg non può essere applicata a questo scopo, perché (e qui rispondo, indirettamente, anche a @OldClaudio) è in effetti impossibile assegnare una propria definizione a un carattere di categoria 3: bisogna prima, ovviamente, cambiargli il codice di categoria ([tt]\catcode[/tt]) e renderlo di categoria 13 (active), il che è proprio quello che @egreg fa. Ma, come ho già detto nel mio precedente messaggio, i caratteri [tt]$[/tt] usati nelle definizioni che TeX ha già “interiorizzato” prima del nostro cambiamento di [tt]\catcode[/tt] rimangono di categoria 3 e, pertanto, conservano il loro significato di comandi primitivi («di livello macchina»), mantenendo il loro vecchio comportamento e ignorando affatto la nostra nuova definizione. Questo riguarda sicuramente tutte le macro che fanno parte del nucleo del LaTeX, che è un formato precompilato, ma in pratica si applica in modo altrettanto ineluttabile alle macro definite da pacchetti come amsmath, perché non è che si possa semplicemente rendere il dollaro un carattere attivo e poi caricare [tt]amsmath.sty[/tt] come se niente fosse!
Vi è poi tutto un altro ordine di problemi, per esempio quello relativo agli allineamenti matematici, i quali richiederebbero che venisse generata un’annotazione per ogni cella dell’allineamento, come già facevo notare in una mia risposta appartenente alla discussione sopraccitata (lì dove faccio l’esempio dell’ambiente [tt]align[/tt]). Insomma, credo davvero che un attacco al problema da questo versante sia irrealizzabile.
Secondo me, l’unica via è intraprendere l’impresa, titanica, di ridefinire uno a uno tutti gli ambienti di alto livello che producono matematica, magari limitandosi a quelli forniti da amsmath. Un’altra linea di attacco che forse potrebbe funzionare (ma devo pensarci) è quella di intervenire a livello di [tt]\everymath[/tt] ed [tt]\everydisplay[/tt], tenendo però presenti tutte le complicazioni derivanti dal fatto che questi due registri vengono in realtà ridefiniti anch’essi da certi pacchetti.
Insomma, ho paura che la strada che rimane da percorrere sia ancora molto lunga… Spero, comunque, di non averti (troppo) scoraggiata.
Ciao.
—
Gustavo
-
10 Agosto 2017 alle 11:54 #111013::
Ciao Gustavo, scusa se tu rispondo solo ora e se la risposta non sarà completa (in questo momento sono un po’ impossibilitata con i mezzi di comunicazione 🙂 ).. ho letto le tue perplessità sulla riuscita del tutto.. ora, io ho lavorato in piccolo riuscendo ad ottenere ciò che volevo (sostanzialmente ho ridefinito gli ambienti e la questione del $ era l’ultimo tassello mancante). Inoltre sono contenta che anche tu abbia proposto la ridefinizione degli ambienti come una delle possibili strade da percorrere..ciò mi rassicura!.. appena avrò sistemato al meglio il tutto e ne avrò la possibilità, sarò ben lieta di condividere con te/voi quanto fatto e magari mi potrete suggerire delle migliorie!
Grazie, ciao!
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.