SageTex

  • Creatore
    Topic
  • #103658
    hpo
      Up
      0
      Down
      ::


      Salve a tutti, ho da pochi giorni scoperto l’esistenza di questo pacchetto che permette di utilizzare tutti i comandi di Sage all’interno di LaTeX.

      Giusto per rendere velocemente l’idea di cosa si tratta e della sua potenza faccio questo esempio: basta scrivere $\sage(matrix[[1,2]],[[3,4]]^10)$ e in automatico avrai nel tuo documento il risultato di A^10, dove A è la matrice che ho scritto all’interno del comando, il tutto senza bisogno di andare a scrivere tutto il codice (begin{array} etc), fa tutto da sé.

      Allo stesso modo permette di fattorizzare polinomi, risolvere in automatico equazioni, plottare grafici 2d e 3d, calcolare derivate, integrali e quant’altro vi pare, pensate quanto risparmio di fatica nello scrivere appunti ed esercizi, il tutto anche senza l’ansia di commettere un qualche typo.

      Il problema però è il seguente: ho perso tutta la giornata di ieri nel cercare di terminare l’installazione su windows, ma senza successo. 🙁

      Per prima cosa ho seguito tutti i punti da 1 a 4 della seguente guida:
      http://wiki.sagemath.org/SageAppliance#The_Sage_Virtual_Machine

      Ho cioè installato VirtualBox e Sage nel mio computer, e Sage funziona perfettamente, il problema però adesso è mettere in “comunicazione” Sage e LaTex.
      Cercando sia nella documentazione di SageTex che in giro ho trovato una riga di codice che andrebbe messa nella shell:

      http://ask.sagemath.org/question/9016/sagetex-and-windows-7/

      To copy the files that LATEX needs into your texmf directory (your windows shared folder), simply do

      cp -r $SAGE ROOT/local/share/texmf/* HOMEPREFIX/texmf/

      Purtroppo però non riesco in alcun modo a far funzionare questa riga di codice, dopo un po’ di ricerche ho visto che per trovare cosa scrivere al posto di SAGE ROOT dovevo andare in Sage (nel programma vero e proprio, non nella shell) e scrivere SAGE_ROOT, facendo così ho trovato che SAGE_ROOT sarebbe /home/sage/sage-6.8 .

      Per quanto riguarda HOMEPREFIX dovrebbe essere invece il percorso della cartella condivisa con Sage (che ho aggiunto da VirtualBox), ma in nessun modo sono riuscito a capire cosa scrivere esattamente lì, fatto sta che questo fantomatico example.tex che dovrebbe comparire all’interno della cartella non compare in nessun modo, e anche fancendo ricerche in tutto il PC gli unici file salvati come example.tex sono nel percorso di Miktex ma non hanno a che fare con Sage.

      Qualcuno mi aiuta per favore? Giuro che se riuscite a risolvermi il problema vi offro una birra tramite bonifico!!! 😀

    Visualizzazione 17 filoni di risposte
    • Autore
      Risposte
      • #103659
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          HOMEPREFIX dovrebbe essere quello che nel perorso alla cartella \texmf del tuo sistema precede il nome di quella cartella; ovviamante dipende se hai installato TeXLive o MiKTeX, ma questo lo scopri subito se usi il programma che dovrebbe chiamarsi explorer, quello che ti mostra tutte le cartelle e i loro contenuti.
          Posso sbagliarmi, am direi che quello sia il significato di HOMEPREFIX.

          Prova; non dovrebbe succedere niente di brutto; al più cancelli quello che hai coiato con il comando cp dalla prima alla seconda cartella.

        • #103660
          hpo
            Up
            0
            Down
            ::


            Avevo cercato anche questa cartella “texmf”, ma senza successo. Ho MiKTeX e andando su “Options –> Roots –> Show MiKTeX-mantained root directories” mi compaiono “C:\ProgramData\MiKTeX\2.9” e un’altra simile, immagino siano queste le cartelle texmf anche se quella sigla non compare esplicitamente.

          • #103661
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              No, infatti, dovrebbe essere qualcosa come C:\programmi\MiKTeX\2.9\

              Ma diamine, non hai mai usato l’Explorer? Non Internet Explorer, ma Windows Explorer, Il suo comando dovrebbe essere già un’icona che sembra una cartellina gialla nella barra inferiore. Altrimenti: Avvio –> prgrammi –> utilities –> Explorer o qualcosa del genere; tieni presente che vado a memoria e l’ultima volta che ho usato Windows era una decina di anni fa.

            • #103662
              hpo
                Up
                0
                Down
                ::


                Nel frattempo ho risolto (anche se al momento non nella maniera più efficiente), adesso scrivo i dettagli così rimane in futuro anche per altri interessati. Per quanto riguarda l’Explorer il problema non era trovare l’indirizzo fisico nel mio pc, che ovviamente conosco, ma l’indirizzo nel linguaggio della VirtualBox.

              • #103663
                hpo
                  Up
                  0
                  Down
                  ::


                  1. Installate Oracle VM VirtualBox e Sage seguendo le istruzioni qui:
                  http://wiki.sagemath.org/SageApplianceInstallation

                  2. Proseguite al punto 3 e 4 qui di seguito:
                  http://wiki.sagemath.org/SageAppliance

                  La cartella condivisa è quella che contiene il worksheet.tex che volete compilare usando sage, inoltre nota bene che una volta che avrete creato una nuova cartella condivisa (supponiamo di chiamarla test) il suo percorso all’interno della shell di sage sarà la seguente —-> /media/sf_test

                  3. Nel foglio di lavoro di Sage (quello bianco) scrivete SAGE_ROOT, nel mio caso l’output è stato /home/sage/sage-6.8 , ma non sono sicuro che sarà così anche per voi.

                  4. Continuate al punto 5 del wiki, ma fermatevi al 5.5, altrimenti la navigazione tra le cartelle e il comando per il copia incolla non funzioneranno

                  5. Adesso il manuale dice di scrivere il seguente codice, io però nella parte destra non ho messo la root di MiKTeX perché non mi accettava il percorso in alcun modo:
                  cp -r $SAGE ROOT/local/share/texmf/* HOMEPREFIX/texmf/

                  Ho risolto così: cp -r /home/sage/sage-6.8/local/share/texmf/* /media/sf_test
                  (ps potreste avere qualche problema perché la tastiera di default è quella americana, ma con un po’ di pazienza si va avanti)

                  Questo ha funzionato, all’interno della cartella condivisa ho ottenuto una cartella con tutta la documentazione e vari altri file, tra cui sagetex.sty, che nota bene non è proprio lo stesso di quello che avete già tramite MiKTeX. Non ho ben capito perché, ma per qualche motivo la versione che si ottiene con l’update di MiKTeX non è lo stessa di quella ottenuta tramite Sage, e ciò ha creato problemi vari anche ad altra gente dall’altra parte del globo. Giusto per la cronaca: se compilando il worksheet.tex ottenete nella cartella un file worksheet.sage allora latex sta usando il sagetex.sty errato, dovete invece ottenere un file worksheet.sagetex.sage

                  6. Al momento ho optato per una soluzione che non è la più efficiente ma è comunque funzionante: spostare il solo sagetex.sty nella cartella di lavoro. Magari nei prossimi giorni provo a collocare tutto al posto giusto tra le cartelle di MiKTeX, per il momento mi va bene così.

                  7. Sempre dalla shell di sage scrivere cd /media/sf_test

                  8. A questo punto siamo pronti per compilare il file worksheet.tex. Se tra i comandi latex avete caricato il pacchetto sagetex e messo istruzioni di sage vi comparirà, come detto su, un file worksheet.sagetex.sage, inoltre nel pdf troverete dei punti interrogativi al posto delle matrici, funzioni etc. che si chiede a Sage di calcolare (inoltre avrete qualche warning in compilazione).

                  9. Dalla shell di sagetex scrivete: sage worksheet.sagetex.sage

                  10. Ricompilate una seconda volta il file worksheet.tex e il gioco è fatto, adesso il pdf contiene tutte le formule che avevate ordinato. 😀 😀

                  Adesso potete cominciare a giocare. 🙂

                • #103664
                  Up
                  0
                  Down
                  ::


                  Non conoscevo SageTex ma sembra molto interessante.

                  Non lo vedo come uno strumento utile per fare i calcoli visto che ci sono programmi specifici per questo e fare i calcoli dentro il documento di testo penso sia una cosa confusionaria* (magari mi sbaglio ed è effettivamente una cosa comoda) e non lo vedo come uno strumento per fare grafici visto che pgfplot è perfettamente integrato con latex ed è uno strumento molto potente.

                  In alcune specifiche occasioni però potrebbe essere utile fare qualche piccola operazione con uno strumento simile. Tempo fa ero quasi impazzito per far fare a latex una operazione matematica che mi serviva per rendere alcune matrici belle da vedere. Con uno strumento simile probabilmente mi sarebbero bastati due minuti. Potrebbe anche essere utile per fare un minimo di postprocessing di dati avendo delle potenzialità superiori a quelle integrate in pgfplot.
                  Mi è capitato, mentre scrivevo una relazione, di pensare “si….ricavando però quest’altro grafico il risultato è più chiaro”. Invece di aprire un software apposito potrebbe essere comodo farlo al volo con uno strumento integrato (nel caso in cui pgfplot non basti, si intende).

                  Approfondirò sicuramente l’argomento 🙂

                  * ovviamente penso a quello che mi ritrovo a fare io…magari chi si occupa di cose diverse riesce a sfruttare diversamente questa potenzialità 😉

                • #103665
                  hpo
                    Up
                    0
                    Down
                    ::

                    Little” post=103717Non lo vedo come uno strumento utile per fare i calcoli visto che ci sono programmi specifici per questo

                    Ciao, potresti consigliarmi per favore alcuni di questi pacchetti? Ad esempio conosci qualche pacchetto a cui poter dare in input una disequazione fratta o polinomiale e ricevere in output gli intervalli di soluzione nella notazione standard? Su sagetex si può fare ma non usa la notazione standard e al momento non so bene come modificare le funzioni di sage..

                  • #103666
                    Up
                    0
                    Down
                    ::


                    Non ho mai parlato di pacchetti ma di programmi (esterni a latex, per intenderci).
                    In ogni caso per quello che devo fare io (che non è matematica pura) molto spesso me la cavo con matlab o un listato in python.
                    Sagetex che, per quanto ho visto, è un python modificato è in grado di fare tutto quello che mi serve. Il problema è che spesso i miei codici sono lunghi sia come scrittura che come tempo di esecuzione e, quindi, scriverli ed eseguirli insieme alla relazione non mi pare una scelta adeguata.
                    Per tornare al tuo problema; non conosco programmi o pacchetti di latex che ti siano di aiuto (o magari non sono a conoscenza della loro capacità di risolverti il problema).
                    Quella che hai posto è un tipo di problematica che non mi capita mai di trattare e quindi non so come aiutarti (non te la saprei risolvere nemmeno in sage usando la notazione di default visto che conosco sage molto marginalmente)

                  • #103667
                    hpo
                      Up
                      0
                      Down
                      ::


                      Ok, grazie comunque. Giusto per contestualizzare ti spiego il motivo per cui mi serve SageTex: in pratica quest’anno sto creando compiti in classe randomizzati con un pacchetto pensato apposta proprio per questo lavoro. Ad esempio posso dichiarare nuove variabili che assumono valori random (con limitazioni e condizioni varie scelte da me) che poi utilizzo nel testo degli esercizi. Inoltre posso scrivere la soluzione in funzione dei vari parametri e, una volta create 20 versioni diverse dello stesso compito, posso stampare anche le 20 soluzioni, in ognuna compariranno i numeri corrispondenti a quella versione del compito.

                      Il problema è che nelle disequazioni polinomiali di grado superiore (ma non è l’unico esempio) la soluzione finale può dipendere da svariati fattori e non è pensabile scrivere una catena interminabile di \ifthenelse ogni volta che scelgo di creare un esercizio più complicato (dal punto di vista della soluzione generale in funzione dei parametri), da cui la ricerca di un pacchetto che facesse il lavoro per me. SageTex da questo punto di vista è perfetto, l’unica pecca è che al momento non lo conosco benissimo e quindi non sto sfruttando al meglio le sue potenzialità, inoltre non so come modificare i comandi sage per personalizzare il formato dell’output.

                    • #103668
                      claudio
                      Partecipante
                        Up
                        0
                        Down
                        ::

                        hpo” post=104656Ok, grazie comunque. Giusto per contestualizzare ti spiego il motivo per cui mi serve SageTex: in pratica quest’anno sto creando compiti in classe randomizzati con un pacchetto pensato apposta proprio per questo lavoro. Ad esempio posso dichiarare nuove variabili che assumono valori random (con limitazioni e condizioni varie scelte da me) che poi utilizzo nel testo degli esercizi. Inoltre posso scrivere la soluzione in funzione dei vari parametri e, una volta create 20 versioni diverse dello stesso compito, posso stampare anche le 20 soluzioni, in ognuna compariranno i numeri corrispondenti a quella versione del compito.

                        Il problema è che nelle disequazioni polinomiali di grado superiore (ma non è l’unico esempio) la soluzione finale può dipendere da svariati fattori e non è pensabile scrivere una catena interminabile di \ifthenelse ogni volta che scelgo di creare un esercizio più complicato (dal punto di vista della soluzione generale in funzione dei parametri), da cui la ricerca di un pacchetto che facesse il lavoro per me. SageTex da questo punto di vista è perfetto, l’unica pecca è che al momento non lo conosco benissimo e quindi non sto sfruttando al meglio le sue potenzialità, inoltre non so come modificare i comandi sage per personalizzare il formato dell’output.

                        Ho lo stesso problema di generare molte versioni dello tesso compito
                        non uso sage me ne vorrei esplorarne le potenzialità
                        è possibile vedere qualche prodotto finale?
                        Al momento uso esami che permette una certa generazione di esercizi
                        ma vorrei esplorare nuove strade
                        Ciao
                        claudio

                      • #103669
                        hpo
                          Up
                          0
                          Down
                          ::


                          Scusami per il ritardo, non controllo molto spesso il forum.

                          Anch’io uso proprio quel pacchetto per la generazione dei compiti in classe, sagetex è solo uno strumento integrativo per la creazione delle soluzioni o per velocizzare alcuni conti. L’ho usato con molta parsimonia per il momento, quindi non ho molto da mostrare, però le potenzialità sono molte. Visto che il prodotto finale è lo stesso di quello del pacchetto esami posto giusto un po’ di codice per mostrare l’utilizzo che ne faccio.

                          Un esempio semplice: in un problemino che si rinconduce al calcolo del mcm posso scrivere le soluzioni in questo modo

                          `
                          \begin{solution}
                          Dopo $\sage{lcm(lcm(lcm(\a,\b),\c),\d)}$ secondi, visto che
                          $\sage{lcm(lcm(lcm(\a,\b),\c),\d)}$ è proprio il minimo comune multiplo tra
                          $\a$, $\b$, $\c$ e $\d$.
                          \end{solution}
                          `

                          (O potrei creare io un comando per il mcm o usare altri pacchetti che ho scoperto successivamente come “calculator”. Per il momento ho risolto così)

                          Un altro esempio (posto giusto la prima variante): qui ho fatto calcolare il prodotto tra due polinomi direttamente a sage. Nel 95% degli esercizi faccio il conto a mano e scrivo i coefficienti corrispondenti, ma quella volta lì ho voluto fare questa prova. L’output non è proprio identico: se fai i conti a mano coefficienti e parte letterale compaiono attaccati, con expand di sage invece ho notato che risultano separati da un piccolo spazio, come se ci fosse una tilde nel comando.

                          Nota come la soluzione non l’ho fatta calcolare a sage, non perché non sia possibile farlo, ma perché l’output per richieste di questo tipo non rispetta la notazione standard degli intervalli. Se qualcuno riuscisse a risolvere questo problema scrivere esercizi del genere (corredati di soluzione) diventerebbe molto più facile e immediato:

                          `
                          %Variante 1

                          \newproblem{

                          \FPsetpar{a}{1}{12}
                          \FPsetpar{b}{1}{12}
                          \FPsetpar{c}{2}{12}[\a]
                          \FPsetpar{d}{1}{12}[\c]
                          \FPsetpar{e}{4}{5}[\c]
                          \FPsetpar{f}{1}{3}[\d]
                          \FPsetpar{g}{1}{2}
                          \FPsetpar{h}{3}{5}

                          \FPsetpar{m}{1}{4}
                          \FPsetpar{n}{1}{4}

                          \FPval{u}{\d*\g}
                          \FPval{v}{\c*\h}

                          \FPval{r}{\c*\f}
                          \FPval{s}{\d*\e}

                          \FPsetpar{z}{1}{8}

                          \ifthenelse{\z=1}
                          {
                          \item
                          $f(x)=
                          \sqrt{\dfrac{(\semplix{\a}{1} x+\b)^{\FPsv{2*\m+1}} \cdot (\c x-\d)^{\FPsv{2*\n}}}
                          {\sage{expand((\e * x-\f)*(\g * x-\h))}}}$
                          }
                          {
                          \ifthenelse{\z=2}
                          {
                          \item $f(x)=\sqrt{\dfrac{(\c x-\d)^{\FPsv{2*\n}}
                          \cdot (\semplix{\a}{1} x+\b)^{\FPsv{2*\m+1}}}
                          {\sage{expand((\e * x-\f)*(\g * x-\h))}}}$
                          }
                          {
                          \ifthenelse{\z=3}
                          {
                          \item $f(x)=
                          \sqrt{\dfrac{(\semplix{\a}{1} x+\b)^{\FPsv{2*\m+1}} \cdot (-\c x+\d)^{\FPsv{2*\n}}}
                          {\sage{expand((\e * x-\f)*(\g * x-\h))}}}$
                          }
                          {
                          \ifthenelse{\z=4}
                          {
                          \item $f(x)=\sqrt{\dfrac{(-\c x+\d)^{\FPsv{2*\n}}
                          \cdot (\semplix{\a}{1} x+\b)^{\FPsv{2*\m+1}}}
                          {\sage{expand((\e * x-\f)*(\g * x-\h))}}}$
                          }
                          {
                          \ifthenelse{\z=5}
                          {
                          \item $f(x)=
                          \sqrt{\dfrac{(-\semplix{\a}{1} x-\b)^{\FPsv{2*\m+1}} \cdot (\c x-\d)^{\FPsv{2*\n}}}
                          {\sage{expand(-(\e * x-\f)*(\g * x-\h))}}}$
                          }
                          {
                          \ifthenelse{\z=6}
                          {
                          \item $f(x)=\sqrt{\dfrac{(\c x-\d)^{\FPsv{2*\n}}
                          \cdot (-\semplix{\a}{1} x-\b)^{\FPsv{2*\m+1}}}
                          {\sage{expand(-(\e * x-\f)*(\g * x-\h))}}}$
                          }
                          {
                          \ifthenelse{\z=7}
                          {
                          \item $f(x)=
                          \sqrt{\dfrac{(-\semplix{\a}{1} x-\b)^{\FPsv{2*\m+1}}
                          \cdot (-\c x+\d)^{\FPsv{2*\n}}}
                          {\sage{expand(-(\e * x-\f)*(\g * x-\h))}}}$
                          }
                          {
                          \item $f(x)=\sqrt{\dfrac{(-\c x+\d)^{\FPsv{2*\n}}
                          \cdot (-\semplix{\a}{1} x-\b)^{\FPsv{2*\m+1}}}
                          {\sage{expand(-(\e * x-\f)*(\g * x-\h))}}}$
                          }}}}}}}

                          \ifthenelse{\NOT \( \u < \v \)} { \begin{solution} La funzione è definita per ogni $x \in [-\sempli{\b}{\a},\sempli{\f}{\e}) \cup (\sempli{\h}{\g},+\infty)$. \end{solution} } { \ifthenelse{\r < \s} { \begin{solution} La funzione è definita per ogni $x \in [-\sempli{\b}{\a},\sempli{\f}{\e}) \cup \{\sempli{\d}{\c}\} \cup (\sempli{\h}{\g},+\infty)$. \end{solution} } { \begin{solution} La funzione è definita per ogni $x \in [-\sempli{\b}{\a},\sempli{\f}{\e}) \cup (\sempli{\h}{\g},+\infty)$. \end{solution} }} } ` Al momento quello che mi interesserebbe di più sarebbe risolvere questo problema, però per chi deve creare esercizi per corsi più avanzati sage risolve qualsiasi problema computazionale algebrico su anelli, campi (anche teoria di Galois per dire), non ho esempi a portata di mano perché non lo uso con questo intento, pero ogni comando di sage che si trova documentato online può essere riportato all'interno di LaTeX. Un esempio di utilizzo che mi riguarda più da vicino e su cui in futuro dovrò lavorare è tutto ciò che riguarda la preparazione di esercizi con funzioni goniometriche, in latex non posso scrivere $\sin \x$ aspettandomi che venga stampato il valore effettivo della funzione, in sage sì.

                        • #103670
                          Roberto Castelluccio
                          Partecipante
                            Up
                            0
                            Down
                            ::


                            Salve, scrivo qui visto che mi sembra l’unico post del forum dedicato a questo pacchetto.
                            Lo uso da un annetto sul mio Mac con TeXShop. Anche io ho impiegato un po’ per configurarlo, nonostante la guida.

                            Volevo chiedere se qualcuno ha trovato il modo di produrre gli output di sagetex con la virgola come separatore decimale e lo spazio come separatore delle migliaia. Oppure se c’è il modo di annidarlo dentro siunitx.

                            Qui sembra che anche altri si siano posti il problema, almeno a livello di sage.

                          • #103671
                            Up
                            0
                            Down
                            ::


                            Ho aspettato a rispondere sperando che qualcuno avesse una idea migliore di quella che ho avuto io qualche mese fa quando mi sono posto il problema.

                            all’interno del mio blocco di sage (che nel mio caso era un sagesilent) avevo definito variabili simili a
                            `outA = r”\SI{%s}{\MPa}”%(str(sA))`
                            ovvero una stringa di testo che comprendesse tutto il comando che latex dovrà poi interpretare.
                            Ho usato poi nel testo sintassi simili a
                            `A = \sagestr{outA}`
                            per ottenere il risultato.

                            Non è una buona soluzione a mio modo di vedere poiché per ogni risultato che voglio mostrare nel testo dovrò andare a definire una stringa di quel tipo.
                            Nel mio caso era un compromesso accettabile poiché ho dovuto mostrare solo 6-7 risultati ma se qualcuno ha una idea migliore sono contentissimo di sentirla 🙂

                          • #103672
                            Roberto Castelluccio
                            Partecipante
                              Up
                              0
                              Down
                              ::


                              Nel mio caso, avendo un grande documento dove ho fatto un uso massiccio di sage, mi sono rassegnato ad impostare siunitx col punto come separatore decimale, e nel mio editor (TeXShop) definire dei completamenti automatici
                              `\sage{round(•)}
                              \sage{round(•)}\,\si{•}
                              \sage{•.n(digits=3)}`
                              No mi trovo male, ma ho dovuto rinunciare alle nostre convenzioni tipografiche ed, inoltre, non ho lo spazio separatore delle migliaia di siunitx.
                              Essendo i miei lavori di carattere tecnico (ingegneria), sagetex mi è utile soprattutto come calcolatrice.
                              Forse la prossima volta mi converrà virare verso qualche altro pacchetto che consenta di fare i conti in linea (perché ne esistono, vero?).


                              @Little
                              : una combinazione delle nostre soluzioni? Non conosco la formattazione delle stringhe in python

                            • #103673
                              Up
                              0
                              Down
                              ::


                              non ho capito cosa vuoi dire con “combinare le nostre soluzioni”. Di preciso cosa del tuo metodo vorresti combinare con il mio?

                              Io comunque ti ribadisco che il mio metodo non è affatto comodo, specie con un uso massiccio di sage.
                              Probabilmente la colpa è mia che sono stato poco chiaro…cerco di fare un esempio più completo.

                              In seguito a calcoli fatti con sage ho una variabile denominata sA (che è quindi un numero).
                              Mi piacerebbe tanto scrivere all’interno di latex
                              `\SI{\sage{sA}}{\MPa}`
                              dicitura che purtroppo non funziona.

                              L’unico modo che ho trovato per farlo funzionare è passare attraverso una variabile ausiliaria (outA) che è una stringa che viene prima interpretata e costruita da sage e poi da latex.

                              Supponendo che sA valga 120 la stringa diventa
                              `\SI{120}{\MPa}`
                              dopo essere stata interpretata da sage, ed è quindi pronta per funzionare in latex tramite la funzione \sagestr

                              Il passare per una variabile ausiliaria rende tutto molto scomodo ma non ho trovato nessun modo per evitare il passaggio

                              Spero di aver chiarito sia quello che faccio che il perché sia molto scomodo 🙂

                            • #103674
                              Up
                              0
                              Down
                              ::


                              Perdonatemi il doppio post…ho tirato fuori esattamente quello che mi piacerebbe avere

                              `% !TEX encoding = UTF-8 Unicode

                              \documentclass[a4paper]{book}

                              \usepackage[T1]{fontenc}
                              \usepackage[utf8]{inputenc}
                              \usepackage[italian]{babel}
                              \usepackage{sagetex}
                              \usepackage{siunitx}
                              \sisetup{
                              output-decimal-marker = {,},
                              scientific-notation=fixed,
                              fixed-exponent=-3,
                              round-mode=places
                              }

                              \newcommand{\sageSI}[3][]{\sagestr{'\SI[#1]{'+str(#2)+'}{#3}'}}

                              \begin{document}
                              Proviamo ad usare sagetex e siunitx insieme
                              \begin{sagesilent}
                              A = 0.2^3
                              \end{sagesilent}
                              Il risultato è pari a \sagestr{'\SI[round-precision=0]{'+str(A)+'}{\mm}'}

                              Usando invece il comando \sageSI[{round-precision=0}]{A}{\mm}

                              \end{document}`
                              Come si vede il primo metodo è molto manuale ma funziona e magari è comodo in alcune situazioni.
                              Invece il comando \sageSI definito in quel modo è esattamente quello che volevo.

                              Ovviamente in maniera analoga si può definire un comando \sagenum per adattare il \num di siunitx all’uso con sage 😉

                            • #103675
                              Roberto Castelluccio
                              Partecipante
                                Up
                                0
                                Down
                                ::


                                Perché se definisco in aggiunta al MWE di Little `\newcommand{\sagenum}[2][]{\sagestr{'\num[#1]{'+str(#2)+'}'}}` poi dando `\sagenum[{round-precision=3}]{C}` sagetex compila, ma ottengo `Paragraph ended before \@newl@bel was complete`

                                Lo stesso con `\sagestr{'\num[round-precision=3]{'+str(C)+'}'}`
                                Dice che ci sono troppe “}”…..

                              • #103676
                                Up
                                0
                                Down
                                ::


                                modifica in
                                `\newcommand{\sagenum}[2][]{\sagestr{r'\num[#1]{'+str(#2)+'}'}}`

                                il problema è che quando si scrivono le stringhe la dicitura \n significa “vai a capo”. Quindi in realtà sage interpretava la stringa come
                                `

                                um [round-precision=3]{C}`

                                La r a inizio stringa invece significa che la stringa è contenuta tutta in una linea. In questo modo sage interpreta correttamente la stringa in \num 🙂

                                PS. quando fai questa modifica cancella tutti i file temporanei generati da sage, altrimenti l’errore resta lì perché lui legge i risultati vecchi e quindi fallisce la compilazione prima ancora di entrare in sage

                            Visualizzazione 17 filoni di risposte
                            • Devi essere connesso per rispondere a questo topic.

                            Go to top