Risposte nei forum create
-
AutoreRisposte
-
::
Scusa. 😳 😳 😳`\FPsv[5+2] -> 7
\FPeval\a{6*5} \a -> 30.00000
\FPeval{a-6+a/10} -> 27
\sempli{a-10}{40} ->1/2
\sempli{a-10}{5} -> 4
\semplix{a-10}{20} ->
\semplix{10-a}{20} -> –
\esempli{a-10}{20} ->
\esempli{10-a}{20} -> -1
`
così che
`\semplix{a-10}{20} x ->x
x^{\esempli{a-10}{20}} -> x
\semplix{10-a}{20} x -> -x
x^{\esempli{10-a}{20}} -> x^{-1}
`\FPsv \sempli, ecc. accettano come argomento(i) qualsiasi espressione che fp può calcolare (numerica o con parametri)
Se vuoi il codice di \sempli, \semplix, posso postarlo.
Spero di essere stato più chiaro ora
::
La soluzione non è generale ma si riferisce esclusivamente al mio problema.Il mio problema era quello di formattare delle espressioni valutate usando fp in modo appropriato se queste si presentano come esponenti o come coefficienti (sullo stile dei comandi efmt e cfmt del pacchetto rangen)
Io ho un comando (\FPsv{arg}) che calcola con fp l’argomento e stampa il risultato
`\FPsv{#1} è definito come \FPeval\tmp{round(#1:0)}\tmp` e volevo applicare la formattazione sia a stringhe con questo comando sia a stringhe più semplici (contenenti un solo valore)Inoltre ho altri comandi che permettono di semplificare frazioni numeriche che hanno a numeratore e a denominatore espressioni valutabili con fp; questi comandi permettono la formattazione per coefficienti ed esponenti.
I comandi sono \sempli{#1}{#2} che fornisce la frazione semplificata, \semplix{#1}{#2} che fornisce òa razione semplificata, la stringa vuota se il risultato è 1, il segno meno se il risultato è -1 e \esempli{#1}{#2} analogo per gli esponenti.La mia soluzione consiste nell’usare questi comandi con denominatore 1: volevo farla automatizzata, ma non ci sono riuscito.
La mia idea era: creo un comando \coef per formattare i coefficienti con un argomento: se l’argomento è un’espressione \semplix il comando non fa nulla, se l’argomento è un’espressione valutabile da fp (ad esempio \a dove \a è un valore numerico assegnato) il comando restituisce \semplix{a}{1}, se l’espressione è \FPv{arg} il comando doveva estrarre arg e calcolare \semplix{arg}{1}.
Spero che si capisca tutto perché ho la tendenza a dare per scontate troppe cose del codice che scrivo.
Grazie
Flavio
::
Grazie del codice (ma come fai a produrlo così di getto?)Ho trovato un’altra soluzione usando random (che uso già in altri punti). Così come è non permette la scelta del seme, ma la cosa mi interessa poco (e posso sempre aggiungerlo con \randomi=). La parte principale (\getitems) è un adattamento di un vecchio codice TeX trovato tempo fa in rete.
Mi piacerebbe avere un tuo parere
`
\documentclass[a4paper]{article}
\usepackage{ifthen}
\input{random}
\makeatletter
\newcount\i@sh
\newcount\j@sh
\newcount\sh@max
\newcounter{shuf@tot}
\newcounter{shuf@lop}
\newcommand\shuf@ch{}
\renewcommand{\theshuf@lop}{\roman{shuf@lop}}%%% costruisco la lista
\newcommand\shuf@ifch[2]{%
\ifthenelse{\not\equal{\shuf@ch}{#1}}{\stepcounter{shuf@lop}\expandafter\edef\csname item\theshuf@lop \endcsname{#2}}{}%
}\newcommand\es@item[1]{%
\edef\es@Lista{\zap@space#1 \@empty}%
\@for\shuf@ch:=\es@Lista\do{%
\shuf@ifch{}{\shuf@ch}%
}
}\newcommand{\sh@chex}[1]{
\setcounter{shuf@lop}{0}
\renewcommand{\theshuf@lop}{\roman{shuf@lop}}
\es@item{#1}
\renewcommand{\theshuf@lop}{\arabic{shuf@lop}}
\setcounter{shuf@tot}{\theshuf@lop}
}\def\printitem#1{\csname item\romannumeral#1\endcsname}
%%% la funzione di scelta nella lista #2 escludendo #1 elementi
\newcommand{\scegli}[2][0]{\sh@max=#1\sh@chex{#2}\getitems}\def\getitems{%
\i@sh=\theshuf@tot
\loop
\expandafter\let \csname flag\number\i@sh \endcsname a%
\advance\i@sh by-1
\ifnum\i@sh > 0 \repeat
\i@sh=\theshuf@tot
\loop
\setrannum{\j@sh}{1}{\theshuf@tot}%
\expandafter\ifx \csname flag\number\j@sh \endcsname a%
\expandafter\let \csname flag\number\j@sh \endcsname b% Controllo se è già stato scelto
\expandafter\edef\csname file\romannumeral\j@sh\endcsname{\csname item\romannumeral\i@sh\endcsname}
\printitem\j@sh
\advance\i@sh by-1
\fi
\ifnum\i@sh > \sh@max \repeat
}\makeatother
\begin{document}
\scegli{1,2,3,4,5,6,7,8,9,10,11,12,13,14,a,b,c}\scegli[3]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,a,b,c}
\scegli[16]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,a,b,c}
\end{document}
`
::`\expandafter\newgeometry\expandafter{\opzioni}`
e se invece di \newgeometry avessi un comando con argomenti come (scusa la “bestemmia sul comando)
\newgeomerty[arg1]{arg2}{arg3}[\lista]
Non riesco a vedere dove vanno gli \expandafter
🙁Proverò a guardare etextools e etoolbox anche se dai miei ricordi la documentazione non brillava per chiarezza e ricchezza di esempi
Grazie
Flavio
::Il pacchetto fp usa comandi non espandibili per l’aritmetica; \edef certamente non può funzionare. Da’ un’occhiata al pacchetto bigintcalc di Heiko Oberdiek che invece fornisce comandi (con sintassi diversa, temo) che sono espandibili.
Purtroppo tanti motivi (non ultimo la sintassi abbastanza semplice) mi impongono di usare fp.
Vorrà dire che sarò costretto a non usare il mio comando \FPsv che non fa un’assegnazione non necessaria nel seguito, ma a fare un’assegnazione esplicita con \FPeval
Grazie e ciao
Flavio
::
Dimenticavo: per linux come interfaccia per la geometria euclidea c’è Eukleides (http://www.eukleides.org/) che produce codice pstricksFlavio
::
Il più grosso vantaggio di PGF è che lo stesso codice è interpretato sia in pdf che in postscript.
Il più grosso svantaggio di pstricks è che l’output deve essere postscript.
Questo è anche il suo più grosso vantaggio: infatti il linguaggio postscript “capisce” molta più matematica del linguaggio pdf e quindi le possibilità di pstricks son molto più ampie si quelle di PGF: dai un’occhiata al manuale di pstricks-add per averne un’idea.Inoltre IMHO anche se il codice da usare con pstricks non è semplicissimo è una passeggiata rispetto a quello da usare con PGF.
Flavio
-
AutoreRisposte