[LaTeX] Comandi \text e \mbox non vanno a capo

thedarkhero
Scrivendo un documento in LaTeX mi sono trovato a dover scrivere all'interno di una formula (quindi tra i tag
\begin{math}
e
\end{math}
) un testo.
Ho provato a scrivere il testo sia con il comando
\text{miotesto}
che con il comando
\mbox{mio testo}
ma in entrambi i casi il testo non va a capo da solo finita la riga ed esce lateralmente dalla pagina.
Come posso ovviare a questo problema?

Risposte
apatriarca
Entrambi i metodi sono pensati per testi corti e che quindi non hanno bisogno di andare a capo. Il fatto che il tuo testo abbia bisogno di andare a capo mi fa tuttavia pensare che forse andrebbe semplicemente inserito come testo (e non dentro un blocco matematico). Puoi mostrare più chiaramente cosa stai cercando di fare?

thedarkhero
La formula in questione è la seguente:
\begin{math}S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}\end{math}

garnak.olegovitc1
"thedarkhero":

\begin{math}S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}\end{math}

posta tutto il codice.. perché cosí da me va e non vedo il bisogno di andare a capo:


codice:
\documentclass{article}

\usepackage[fontsize=9.5]{scrextend}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{blindtext}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{dsfont}
\usepackage{mathrsfs}
\usepackage{marvosym}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{tabulary}
\usepackage{booktabs}
\usepackage{wasysym}
\usepackage[usestackEOL]{stackengine}
\usepackage[cal=rsfso]{mathalfa}
\usepackage[a4paper,top=2cm,bottom=2cm,left=0.5cm,right=0.5cm]{geometry}
\usepackage{tipa}
\usepackage{amscd}
\usepackage{amstext}
\usepackage{marvosym}
%\usepackage{MnSymbol}

\begin{document}
\begin{math}S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}\end{math}
\end{document}
[nota]naturalmente usa solo quello che ti serve, io ormai ho dei pacchetti & altro che uso sempre e carico[/nota]
se intendi una cosa del tipo come la seguente in cui la formula é davvero brutta a vedere:


codice
\documentclass{article}

\usepackage[fontsize=9.5]{scrextend}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{blindtext}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{dsfont}
\usepackage{mathrsfs}
\usepackage{marvosym}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{tabulary}
\usepackage{booktabs}
\usepackage{wasysym}
\usepackage[usestackEOL]{stackengine}
\usepackage[cal=rsfso]{mathalfa}
\usepackage[a4paper,top=2cm,bottom=2cm,left=6cm,right=6cm]{geometry}
\usepackage{tipa}
\usepackage{amscd}
\usepackage{amstext}
\usepackage{marvosym}
%\usepackage{MnSymbol}

\begin{document}
\begin{flushleft}
 Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura, ché la diritta via era smarrita. Ahi quanto a dir qual era è cosa dura, esta selva selvaggia e aspra e forte, che nel pensier rinova la paura! Tant'è amara che poco è più morte; ma per trattar del ben ch'i' vi trovai, dirò de l'altre cose ch'i' v'ho scorte. Io non so ben ridir com'i' v'intrai, tant'era pien di sonno a quel punto che la verace via abbandonai.\newline \newline
\begin{math}
S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}
\end{math}
\end{flushleft}
\end{document}
[nota]nota \(1\)[/nota]
si puó ovviare al problema in questo modo:


codice:
\documentclass{article}

\usepackage[fontsize=9.5]{scrextend}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{blindtext}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{dsfont}
\usepackage{mathrsfs}
\usepackage{marvosym}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{tabulary}
\usepackage{booktabs}
\usepackage{wasysym}
\usepackage[usestackEOL]{stackengine}
\usepackage[cal=rsfso]{mathalfa}
\usepackage[a4paper,top=2cm,bottom=2cm,left=6cm,right=6cm]{geometry}
\usepackage{tipa}
\usepackage{amscd}
\usepackage{amstext}
\usepackage{marvosym}
%\usepackage{MnSymbol}

\begin{document}
\begin{flushleft}
 Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura, ché la diritta via era smarrita. Ahi quanto a dir qual era è cosa dura, esta selva selvaggia e aspra e forte, che nel pensier rinova la paura! Tant'è amara che poco è più morte; ma per trattar del ben ch'i' vi trovai, dirò de l'altre cose ch'i' v'ho scorte. Io non so ben ridir com'i' v'intrai, tant'era pien di sonno a quel punto che la verace via abbandonai.
\begin{center}
\makebox[\linewidth][c]{
\renewcommand\arraystretch{1.2}
\begin{math}S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}
\end{math}
}
\end{center}
\end{flushleft}
\end{document}
[nota]nota \(1\)[/nota]

lo stesso funzionamento vale per tabelle e immagini se ricordo bene

apatriarca
Non è sempre possibile allargare la dimensione della colonna (per esempio nel caso di più di una colonna di testo) ed è comunque abbastanza brutto. Direi che è accettabile solo se l'allargamento è minimo. La vera soluzione è a mio parere quella di riscrivere il testo in modo che sia più sintetico. Per esempio qualcosa come "\(a_i \neq 0\) per un numero finito di \(i \in I\)." Nessun bisogno di metodi strani o casi particolari e alla fine è forse anche più chiaro.

garnak.olegovitc1
"apatriarca":
Non è sempre possibile allargare la dimensione della colonna (per esempio nel caso di più di una colonna di testo) ed è comunque abbastanza brutto.
certo, concordo.. dipende da casi a casi, vediamo se thedarkhero posta il suo codice per intero ;-)

thedarkhero
Nel mio caso in particolare è bastato fare come suggerito da apatriarca, in generale però dipende non solo da quanto è lunga la formula ma anche da quanto testo c'è prima, dalla dimensione del font ecc...
Ad esempio:
Si definisce l'insieme delle successioni quasi ovunque nulle \begin{math}S = \{ (a_i)_{i \in I} \in A | a_i \neq 0 \text{ per un numero finito di } i \in I \}\end{math}

Sarebbe interessante capire se c'è un modo di dire a LaTeX di mettere la formula in questione su un'unica riga (a condizione che la formula da sola ci stia) e di mandarla a capo in blocco se prima della formula c'è troppo testo per farci stare tutto su una riga.

apatriarca
Il problema è che hai richiesto che la tua equazione sia sulla stessa riga del testo e non in una riga separata. Se non vuoi questo comportamento allora l'ambiente math non è quello corretto. Devi usare
\begin{displaymath} ... \end{displaymath}

thedarkhero
L'ambiente displaymath forza la formula a stare su una sola riga, che non è quello che intendo io.
Io vorrei che gestisse la formula come un'unica parola, ovvero che la inserisca inline ma se non ci sta sulla riga perchè "inizia troppo avanti" la mandi a capo in blocco, senza spezzarla.

apatriarca
Andare a capo a metà riga per non spezzare una formula non mi sembra stilisticamente molto bello. In ogni caso, diverse soluzioni sono per esempio descritte in questo thread di stack exchange. La più semplice è quella di inserire la tua formula tra parentesi graffe. Ma anche in questo caso la soluzione a mio parere migliore sarebbe quella di riscrivere il testo in modo che non sia necessario usare metodi di questo tipo. Non vedo ad esempio il bisogno di usare una formula nella tua frase. La tua formula è in effetti un insieme di parole all'interno della definizione di un insieme di successioni (ma già sappiamo che stai definendo un insieme di successioni..

garnak.olegovitc1
"apatriarca":
Il problema è che hai richiesto che la tua equazione sia sulla stessa riga del testo e non in una riga separata. Se non vuoi questo comportamento allora l'ambiente math non è quello corretto. Devi usare
\begin{displaymath} ... \end{displaymath}
lo stesso se usa come delimitatori il doppio dollaro ;-)

"thedarkhero":
L'ambiente displaymath forza la formula a stare su una sola riga, che non è quello che intendo io.
Io vorrei che gestisse la formula come un'unica parola, ovvero che la inserisca inline ma se non ci sta sulla riga perchè "inizia troppo avanti" la mandi a capo in blocco, senza spezzarla.
racchiudi tra graffe la formula entro i delimitatori
\( ... \)

Se usi l´ambiente
\begin{equation}...\end{equation}
e il problema é la spaziatura verticale tra la formula e il testo, qualora la formula vada a capo, tale da sembrare la formula in blocco su una nuova quasi-riga allora prova cosí (l´effetto é uguale alla soluzione con le graffe):
\begin{equation*}
\setlength{\lineskiplimit}{0pt}
\setlength{\lineskip}{0pt}
\setlength{\abovedisplayskip}{0pt}
\setlength{\belowdisplayskip}{0pt}
\setlength{\abovedisplayshortskip}{0pt}
\setlength{\belowdisplayshortskip}{0pt}  
S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}
\end{equation*}

Puoi vedere codice e risultato direttamente nel link https://www.overleaf.com/read/bqsvfvcjrtjq, Il primo esempio l´ho aggiunto perché con questo rilancio la discussione mit etwas anderes[nota]con qualcos´altro[/nota] e chiedo scusa all´autore del post. In particolare:

1- Come mai quel "definisce" nel primo esempio non va a capo? Non che volessi che vada a capo, ergo come mai nel secondo e terzo esempio, va a capo?
2- Se volessi centrare la formula nel terzo esempio (o secondo) purché la spaziatura verticale sia la stessa di quando non sono centrate, per come scritto e si vede nel codice quindi, come potrei fare?
3- Nel link https://www.overleaf.com/read/hksxykqfvqnf ho aggiunto un quarto e quinto esempio, se volessi eliminare la spaziatura verticale tra formula e testo in questi due esempi da avere la medesima degli esempi 2 e 3, come potrei fare?

thedarkhero
Valuterò quale delle opzioni mi sembra esteticamente più valida.
Intanto vi ringrazio entrambi per le informazioni che mi avete dato!

garnak.olegovitc1
"thedarkhero":
Valuterò quale delle opzioni mi sembra esteticamente più valida.
Intanto vi ringrazio entrambi per le informazioni che mi avete dato!
figurati per cosí poco, valuta anche la seguente che ho scritto.. ;-)

"garnak.olegovitc":
In particolare:

1- Come mai quel "definisce" nel primo esempio non va a capo? Non che volessi che vada a capo, ergo come mai nel secondo e terzo esempio, va a capo?
2- Se volessi centrare la formula nel terzo esempio (o secondo) purché la spaziatura verticale sia la stessa di quando non sono centrate, per come scritto e si vede nel codice quindi, come potrei fare?
3- Nel link https://www.overleaf.com/read/hksxykqfvqnf ho aggiunto un quarto e quinto esempio, se volessi eliminare la spaziatura verticale tra formula e testo in questi due esempi da avere la medesima degli esempi 2 e 3, come potrei fare?
tra tempo libero & altro, e leggendo qualche manuale e qualche istruzione online per capire di risolvere einige meine Kuriositäten[nota]alcune mie curiositá[/nota], posto qualche soluzione per aggiungere qualcosa in piú e di nuovo alla discussione (magari a qualcuno possa servire). Ho creato un nuovo documento e preciso di avere inserito nel documento in questo link https://www.overleaf.com/read/rcwtpgnjcyjs la seguente
\newenvironment{shrinkeq}[1]
{ \bgroup
  \addtolength\abovedisplayshortskip{#1}
  \addtolength\abovedisplayskip{#1}
  \addtolength\belowdisplayshortskip{#1}
  \addtolength\belowdisplayskip{#1}}
{\egroup\ignorespacesafterend}
e di usare
\begin{shrinkeq}{-3ex}...\end{shrinkeq}
e quindi guardando il link postato:
-- Nel 1o ESEMPIO e 2o ESEMPIO non cambia nulla, posso anche ovvero non inserirli (mi aspettavo che almeno nel 2o esempio si creava un qualcosa da "WARNING" con "setlenght", e invece niente... meglio cosí 8-) )
-- Nel 3o ESEMPIO ho settato a
{-2.2ex}
per avere una stessa spaziatura verticale come nel 1o e 2o ESEMPIO (sperando che l´occhio o lo schermo non mi ingannano)
-- Nel 4o ESEMPIO elimino la spaziatura verticale inserendo l´ambiente come nel 1o e 2o ESEMPIO.

Vediamo adesso come centrare senza spaziatura verticale:
-- Nel 3o e 4o ESEMPIO é inutile centrare
-- Nel 1o ESEMPIO ho usato semplicemente la nuova istruzione con l´istruzione in un mio precedente post senza usare peró l´ambiente
\begin{center}... \end{center}
ed inserendo la formula entro i delimitatori del dollaro, e quindi
\begin{shrinkeq}{-20ex}
\makebox[\linewidth][c]{
\renewcommand\arraystretch{1.2}
$S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}$
}
\end{shrinkeq}

-- Nel 2o ESEMPIO ho dovuto ragionare un po e dopo un tentativo ho capito come incatenare giustamente gli ambienti ed ho usato il seguente codice
\begin{shrinkeq}{-12ex}
\begin{equation*}
\setlength{\lineskiplimit}{0pt}
\setlength{\lineskip}{0pt}
\setlength{\abovedisplayskip}{0pt}
\setlength{\belowdisplayskip}{0pt}
\setlength{\abovedisplayshortskip}{0pt}
\setlength{\belowdisplayshortskip}{0pt}
\makebox[\linewidth][c]{
\renewcommand\arraystretch{1.2}
$S=\{(a_i)_{i \in I} \in A | a_i=0 \text{ per tutti gli } i \in I \text{ tranne che per un numero finito} \}$
}
\end{equation*}
\end{shrinkeq}
tutto il codice é visibile in questo link https://www.overleaf.com/read/zdxnngmhjhdx

La questione é parzialmente risolta, perché rimane sempre per me il mistero di quel "definisce" che va a capo, e volendo rilanciare ancora una volta il post:

-- Vorrei sapere come eliminare o ridurre la spaziatura verticale tra le due righe della formula nel 3o e 4o ESEMPIO


Tschüss!! 8-) 8-) 8-)

Cla1608
Buonasera a tutti, scusate se riesumo un posto di mille anni fa ... ho un problema vagamente simile. Ho una formula su un ambiente equation un pò lunga che volevo separare come da immagine (da rossa a blu):


Il codice attuale (non so se può andare bene), è questo:
\begin{equation}
	\mbox{\text{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}}= 
	\frac{\mbox{\text{YYYYYYYYYYYY}}}{\mbox{\text{ZZZZZZZZZZZZZ}}}
\end{equation}


So che non è una scelta stilistica ottimale (ne tantomeno matematica) ma l argomento non è propriamente matematico.

Grazie

marco2132k
Era meglio se aprivi un nuovo thread, in Generale. Intanto rispondo poi forse qualcuno scorpora.

L'immagine è coperta da segni rossi e blu, e non si capisce bene quello che vuoi fare. Credo che tu abbia una cosa tipo
\begin{equation}
\text{molto testo} = \frac{\text{altro testo}}{\text{ancora testo}}
\end{equation}
e che l'idea sia di ottenere una cosa tipo
\[
\begin{aligned}
\text{molto}\\
\text{testo}
\end{aligned}
= \frac{\text{altro testo}}{\text{ancora testo}}
\]
In questo caso potresti usare [inline]\parbox[/inline] (click). Ironicamente, sul forum non funzia.

C'è un motivo particolare per cui metti [inline]\text[/inline] dentro [inline]\mbox[/inline]? Di solito non si fa, basta usare [inline]\text[/inline].

Cla1608
Grazie per la risposta, in pratica vorrei mandare a capo il termine che sta alla sinistra dell'uguale (da rosso su linea unica a blu su 2 linee). Poi per la domanda

"marco2132k":

C'è un motivo particolare per cui metti [inline]\text[/inline] dentro [inline]\mbox[/inline]? Di solito non si fa, basta usare [inline]\text[/inline].


no, nessun motivo particolare, ho fatto diverse prove e al momento ho lasciato il codice così (non ha molto senso).

marco2132k
\[
\parbox{3cm}{\centering un sacco di testo} = \frac{\text{Un po’ meno testo}}{\text{altro testo}}
\]

Qui \centering serve per centrare il testo.

EDIT. Occhio che mi ero dimenticato di racchiudere il testo dentro [inline]\text{}[/inline]. Ho sistemato.

Cla1608
"marco2132k":
\[
\parbox{3cm}{\centering un sacco di testo} = \frac{Un po’ meno testo}{altro testo}
\]

Qui \centering serve per centrare il testo.

Perfetto, grazie!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.