- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 19 anni, 8 mesi fa da .
-
Topic
-
Riciao a tutti,
rieccomi sulla seconda (e ultima) parte dedicata all’algebra relazionale, in cui parlo del mio ultimo (per adesso) problema. Ho deciso di aprire un thread a parte in quanto ritengo che quest’ultima domanda sia meno specifica delle altre e possa interessare a un bel po’ di persone.La domanda è: come si fa a mandare a capo il testo contenuto nel «pedice» (si chiama così? O «deponente»? O qualcos’altro ancora?) di una formula matematica? O meglio ancora:
-
è corretto o no fare quello che propongo di fare sopra?
-
se sì, come si fa a farlo?
detto ciò, passiamo al problema vero e proprio: immaginiamo di avere a che fare con un’espressione dell’algebra relazionale (l’argomento era stato introdotto nella discussione Algebra relazionale (1 di 2): considerazioni generali, <http://guit.sssup.it/phpbb/viewtopic.php?t=2187>) con un bel po’ di condizioni:
`\documentclass{article}\usepackage{amsmath}
\newcommand{\proiezioneSu}[1]{\text{\LARGE{$\pi$}}_{#1}}
\newcommand{\selezioneSu}[1]{\text{\LARGE{$\sigma$}}_{#1}}\begin{document}
bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla,\[
R2 \leftarrow \proiezioneSu{codiceFiscale, Dipartimento, Stipendio}
(\selezioneSu{Nome = `Mario' \wedge Cognome = `Rossi' \wedge Stipendio >
10000} (R1))
\]bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla,\end{document}
`
se provate a comporre quel codice, vi renderete subito conto che quell’espressione «sborda».Possibili soluzioni? All’inizio mi era venuto in mente di giocare con i margini della pagina grazie al pacchetto «geometry», ma poi mi sono reso conto che questa tattica è perdente già in partenza, in quanto anche azzerando i margini e impostando l’orientamento della pagina orizzontale, potrebbe sempre esserci un’espressione così lunga da non poter essere contenuta. A questo punto mi è venuto in mente che quando mi è stata insegnata l’algebra relazionale, il docente alla lavagna era solito mandare a capo le varie condizioni, scrivendole su più righe. Ho deciso quindi di fare lo stesso in LaTeX.
A questo punto, da bravo ignorante, ho provato a forzare un’andata a capo in questo modo:
`\[
R2 \leftarrow \proiezioneSu{codiceFiscale,\\Dipartimento,\\Stipendio}
(\selezioneSu{Nome = `Mario' \wedge\\Cognome = `Rossi' \wedge\\Stipendio >
10000} (R1))
\]
`
ma evidentemente l’andata a capo non funziona nello stesso modo nelle modalità normale e matematica. Allora, ho provato così:
`\[
R2 \leftarrow \proiezioneSu{\text{codiceFiscale,\\Dipartimento,\\Stipendio}}
(\selezioneSu{Nome = `Mario' \wedge Cognome = `Rossi' \wedge Stipendio >
10000} (R1))
\]
`
e, di nuovo, non ho ottenuto nessun effetto.Poi mi è venuto in mente che in LaTeX esistono sia scatole i cui limiti sono valicabili (cioè il testo può uscire dalla scatola che lo contiene), come quelle prodotte dai comandi «\mbox» e «\makebox» che scatole con limiti invalicabili, come quelle create da «\parbox» e dall’ambiente «minipage». Pertanto, ho riscritto il codice tenendo conto di queste ultime:
`\[
R2 \leftarrow \proiezioneSu{\text{\parbox{1.75cm}{codiceFiscale,
Dipartimento, Stipendio}}} (\selezioneSu{\text{\parbox{2.5cm}{Nome =
`Mario' \wedge Cognome = `Rossi' \wedge Stipendio > 10000}}} (R1))
\]
`
dire che la mia soluzione è obbrobriosa, purtroppo, è poco, in quanto, anche se l’espressione non sborda più:-
l’effetto tipografico è osceno, non era certo questo quello che volevo, e la spaziatura è eccessiva;
-
c’è una sfilza di errori e di «brutte scatole»;
-
chi scrive il testo non può sapere a priori se la «scatola» dev’essere lunga 2.5 cm piuttosto che 3 cm e così via…
Vorrei capire quindi come poter risolvere il problema principale, cioè far sì che l’espressione non sbordi, magari utilizzando una tecnica più intelligente di quella che ho proposto io…
Grazie e a presto!
Saluti.
-
- Devi essere connesso per rispondere a questo topic.