Discussione:
Operazioni in colonna
(troppo vecchio per rispondere)
Gabriele 'LightKnight' Stilli
2005-10-28 12:45:03 UTC
Permalink
Buongiorno a voi e perdonate la domanda a bruciapelo senza aver dato un
minimo di aiuto in precedenza (ma, vi assicuro, vi leggo moltissimo) :-)

Avrei bisogno di scrivere una moltiplicazione in colonna, con tutti i
prodotti parziali e la somma finale. Una cosa simile a questa (gli esperti
trattengano i conati di vomito, per pietà):

\[
begin{tabular}{rl}
11100001 & $\times$\\
10001110 & =\\
\hline
00000000 &\\
11100001- &\\
11100001-- &\\
11100001--- &\\
00000000---- &\\
00000000----- &\\
00000000------ &\\
11100001------- &\\
\hline\hline
111110011001110
\end{tabular}
\]

Esiste, sì, il pacchetto "xlop" ma, come avrete notato, la moltiplicazione è
in base 2, che il pacchetto ancora non gestisce (infatti l'ho provato e il
risultato è sballato).

Potrei giocare un po' meglio con array o con tabular, ma la cosa sembra
lunga e complicata. C'è un modo più semplice?

Grazie mille e scusate gli orrori :-)

Gabry (sto imparando, siate clementi) :-)
--
http://poisson.phc.unipi.it/~stilli/ ICQ UIN: 159169930
[HT] Lothlorien F.C. (51042, IV.53) #156 Club dei Mille
Meglio essere ottimisti e avere torto, che pessimisti e avere ragione
[Albert Einstein]
Enrico Gregorio
2005-10-28 13:24:04 UTC
Permalink
Post by Gabriele 'LightKnight' Stilli
Buongiorno a voi e perdonate la domanda a bruciapelo senza aver dato un
minimo di aiuto in precedenza (ma, vi assicuro, vi leggo moltissimo) :-)
Avrei bisogno di scrivere una moltiplicazione in colonna, con tutti i
prodotti parziali e la somma finale. Una cosa simile a questa (gli esperti
\[
begin{tabular}{rl}
11100001 & $\times$\\
10001110 & =\\
\hline
00000000 &\\
11100001- &\\
11100001-- &\\
11100001--- &\\
00000000---- &\\
00000000----- &\\
00000000------ &\\
11100001------- &\\
\hline\hline
111110011001110
\end{tabular}
\]
Esiste, sì, il pacchetto "xlop" ma, come avrete notato, la moltiplicazione è
in base 2, che il pacchetto ancora non gestisce (infatti l'ho provato e il
risultato è sballato).
Potrei giocare un po' meglio con array o con tabular, ma la cosa sembra
lunga e complicata. C'è un modo più semplice?
La faccenda dipende dal fatto che noi scriviamo i numeri alla rovescia.
Fibonacci li imparò dagli arabi, che invece li scrivevano diritti (visto
che la loro scrittura è da destra a sinistra); infatti, a parte la forma
delle cifre, il numero 1234 si scrive con la stessa successione sia da
noi che con la scrittura araba. Ovviamente loro non hanno alcun problema
a incolonnare!

Il tuo problema si risolve con una magia.

==== nel preambolo ====
\def\setupqm{\catcode`\?=13 }
\begingroup
\catcode`\?=13
\gdef?{\hphantom{0}}
\endgroup

==== nel documento ====
\[\setupqm
\begin{array}{rc}
11100001 & \times\\
10001110 & =\\
\hline
00000000 &\\
11100001? &\\
11100001?? &\\
11100001??? &\\
00000000???? &\\
00000000????? &\\
00000000?????? &\\
11100001??????? &\\
\hline\hline
111110011001110
\end{array}
\]
====

Invece della magia, puoi semplicemente scrivere \hphantom{0}
al posto di ogni ?, ma così hai anche l'allineamento visivo.
Usa array e non tabular.

Ciao
Enrico
Gabriele 'LightKnight' Stilli
2005-10-28 14:35:03 UTC
Permalink
Post by Enrico Gregorio
Il tuo problema si risolve con una magia.
Parrebbe funzionare, grazie :-)

Ovviamente quando avrò tempo mi studierò il significato di un po' dei
comandi che dato :-)

Gabry (urrà) :-)
--
http://poisson.phc.unipi.it/~stilli/ ICQ UIN: 159169930
[HT] Lothlorien F.C. (51042, IV.53) #156 Club dei Mille
Meglio essere ottimisti e avere torto, che pessimisti e avere ragione
[Albert Einstein]
El Bandolero
2005-10-29 12:19:09 UTC
Permalink
Post by Gabriele 'LightKnight' Stilli
Post by Enrico Gregorio
Il tuo problema si risolve con una magia.
Parrebbe funzionare, grazie :-)
Ovviamente quando avrò tempo mi studierò il significato di un po' dei
comandi che dato :-)
Gabry (urrà) :-)
le magie sono una gran cosa, ma il carattere monospaced funziona
altrettanto bene e senza aggiunte
basta racchiudere l'operazione tra \texttt

\texttt{
\begin{tabular}{rl}
11100001 & $\times$\\
10001110 & =\\
\hline
00000000 &\\
11100001- &\\
11100001-- &\\
11100001--- &\\
00000000---- &\\
00000000----- &\\
00000000------ &\\
11100001------- &\\
\hline\hline
111110011001110
\end{tabular}
}
--
ciao
El Bandolero
Gabriele 'LightKnight' Stilli
2005-10-29 13:45:03 UTC
Permalink
Post by El Bandolero
le magie sono una gran cosa, ma il carattere monospaced funziona
altrettanto bene e senza aggiunte
basta racchiudere l'operazione tra \texttt
Eh, c'avevo pensato, ma è un po' più bruttino :-)

Per ora tengo così :-)

Gabry (strano, ma vero) :-)
--
http://poisson.phc.unipi.it/~stilli/ ICQ UIN: 159169930
[HT] Lothlorien F.C. (51042, IV.53) #156 Club dei Mille
Meglio essere ottimisti e avere torto, che pessimisti e avere ragione
[Albert Einstein]
Enrico Gregorio
2005-10-29 15:14:35 UTC
Permalink
Post by El Bandolero
Post by Gabriele 'LightKnight' Stilli
Post by Enrico Gregorio
Il tuo problema si risolve con una magia.
Parrebbe funzionare, grazie :-)
Ovviamente quando avrò tempo mi studierò il significato di un po' dei
comandi che dato :-)
Gabry (urrà) :-)
le magie sono una gran cosa, ma il carattere monospaced funziona
altrettanto bene e senza aggiunte
basta racchiudere l'operazione tra \texttt
[CUT]
Uhm. A me pare 'na ...

1) I caratteri sono decisamente diversi da quelli normali.
2) Nelle operazioni in colonna ci sono spazi e non trattini
dove le cifre non sono scritte.
3) Altre obiezioni assortite che non ho voglia di scrivere :-)

Le magie si riducono a poco, a dire il vero.

Il comando \setupqm serve ad assegnare al carattere "?" un significato
speciale, in modo che si comporti come un comando (similmente al
carattere "~").

La magia sta in seguito, dove questo comando denotato solo con il
carattere "?" è definito come: "lascia uno spazio orizzontale come se
al suo posto ci fosse uno zero".

Occorre la sintassi TeX e non quella LaTeX perché il comando va
definito in un posto dove "?" sia considerato speciale (attivo, in
termine TeXnico) e il modo più semplice è di definirlo globalmente
in un gruppo. Si potrebbe anche fare così:

\catcode`\?=13
\newcommand{?}{\hphantom{0}}
\catcode`\?=12

sapendo che il codice di categoria usuale di "?" è 12. Occorre poi dare
il comando \setupqm dentro al \[...\] perché così solo lì il carattere
"?" acquista il significato speciale. Al posto di "?" può essere usato
un qualunque carattere; ho scelto "?" per due motivi: (1) è quello usato
da Knuth nell'analogo esempio sul TeXbook; (2) quasi certamente non
compare nelle operazioni in colonna.

Ciao
Enrico
El Bandolero
2005-10-29 20:32:22 UTC
Permalink
Post by Enrico Gregorio
[CUT]
Uhm. A me pare 'na ...
1) I caratteri sono decisamente diversi da quelli normali.
2) Nelle operazioni in colonna ci sono spazi e non trattini
dove le cifre non sono scritte.
3) Altre obiezioni assortite che non ho voglia di scrivere :-)
perchè tu sei una persona gentile
invece io, che non sono gentile, mi do dell'emerito somaro da solo:
quello che ho fatto io è proprio una *schifezza*...

PS
si può dire somaro su questo NG?
--
ciao
El Bandolero
Enrico Gregorio
2005-10-30 14:49:38 UTC
Permalink
Post by El Bandolero
Post by Enrico Gregorio
[CUT]
Uhm. A me pare 'na ...
1) I caratteri sono decisamente diversi da quelli normali.
2) Nelle operazioni in colonna ci sono spazi e non trattini
dove le cifre non sono scritte.
3) Altre obiezioni assortite che non ho voglia di scrivere :-)
perchè tu sei una persona gentile
quello che ho fatto io è proprio una *schifezza*...
PS
si può dire somaro su questo NG?
Non so se è politicamente corretto, adesso che i somari sono
usati come lavoratori nel ramo delle manutenzioni stradali.

Ciao
Enrico

Loading...