web-dev-qa-db-fra.com

Comment mettre un saut de ligne dans un calcul

Je voudrais exprimer la phrase suivante (emplacement_source est également en italique, il n'est pas correctement rendu):

Chaque entrée a une liste de Tuple: < emplacement_source , R/W , trip_counter , occurrence , tué (expliqué plus loin)>

Ma solution actuelle est la suivante:

$ \left\langle
\textit{source\_location}, \textit{R/W}, \textit{trip\_counter},
\textit{occurrence}, \textit{killed} \text{(explained in the later)}
\right\rangle $

J'utilise du papier à 2 colonnes. Ce <..> est trop long, mais pas de saut de ligne car c’est un calcul. Comment puis-je mettre automatiquement (ou manuellement) un saut de ligne dans un tel cas? Il semble que \left\langle et \right\rangle devraient figurer dans un seul calcul. Donc, difficile de casser en plusieurs maths.

$<$ et $>$ serait une alternative, mais je ne l'aime pas.

15
minjang

Pourquoi ne pas définir une nouvelle commande:

\newcommand{\Tuple}[5]{$\langle$\textit{#1}, \textit{#2}, \textit{#3}, \textit{#4},
   \textit{#5} (explained in the latter)$\rangle$}

Ensuite, utilisez \Tuple{sourcelocation}{R/W}{tripcounter}{occurrence}{killed}

5
Rob Hyndman

LaTeX autorise les mathématiques en ligne à recouvrir les lignes par défaut, mais il existe un certain nombre de restrictions. Plus précisément, dans votre cas, utiliser \left...\right place tout dans un groupe mathématique incassable. La première étape consiste donc à les remplacer par soit simplement \langle...\rangle, soit peut-être \bigl\langle...\bigr\rangle.

Cependant, cela ne suffit toujours pas pour permettre le saut de ligne; généralement, cela n’est toujours autorisé qu’après les relations ou les opérateurs, pas les signes de ponctuation tels que la virgule. (Je pense que c'est ce qui se passe de toute façon; je n'ai pas arrêté de chercher cela.) Vous voulez donc indiquer où des coupures de ligne autorisées peuvent se produire en écrivant \linebreak[1] après chaque virgule.

Selon la fréquence à laquelle vous devez le faire, il peut être préférable d'écrire une commande pour envelopper vos "tuples" dans une commande Nice. Pour écrire cela dans votre source:

 $\mytuple {source\_location, R/W, voyage\_counter, occurrence, 
 tué\upshape (expliqué dans la suite)} $ 

voici une définition de \mytuple qui prend en compte tous les éléments ci-dessus:

\makeatletter 
\newcommand\mytuple [1] {% 
\@ tempcnta = 0 
\bigl\langle 
\@for\@ ii: = # 1\do {% 
\@insertingingcomma 
\textit {\ @ ii} 
}% 
\bigr\rangle 
 } 
\def\@insertbreakingcomma {% 
\ifnum\@tempcnta = 0\else\,\\ linebreak [1]\fi 
\advance\@tempcnta\@ ne 
} 
\faire une autre 
21
Will Robertson

Il semble y avoir un paquetage qui répond à ce problème, appelé breqn . Vous pouvez essayer ceci et nous le faire savoir (je ne l'ai pas utilisé).

1
Grzegorz Oledzki

J'utiliserais l'environnement align * d'AMSmath. En outre, vous pouvez simplement ajouter "\" pour casser les lignes? Devrait fonctionner dans les environnements mathématiques, aussi. Sinon, vous pouvez séparer les équations.

0
wishi