
Ich habe:
\documentclass[12pt,a4paper]{article}
\newcounter{conto}
\setcounter{conto}{\time}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{dsfont}
\usepackage{mathrsfs}
\usepackage{amssymb,amsmath}
\usepackage{cancel}
\begin{document}
\section{Prove}
\(\boxed{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"}\)
\end{document}
aber die Ausgabe ist die folgende:
Wie beginnt man automatisch eine neue Zeile \boxed{}
?
Antwort1
Guten Abend, der \boxed
Befehl ist in der amsmath.{sty|dtx}
Datei definiert (die Teil des amsmath
Pakets ist), er lautet:
\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}}
Wir können es neu definieren und stattdessen Inline-Mathematik verwenden. Mithilfe des \fbox
Befehls können wir ein Rechteck zeichnen, dessen richtige Breite ist \textwidth-2\fboxrule-2\fboxsep
. Der Kern unserer Arbeit besteht darin, Zeilenumbrüche an den richtigen Stellen (Kommas, Anführungszeichen) zuzulassen, ohne sie zu verlieren. Lassen Sie uns \allowbreak
zu diesem Zweck verwenden.
Der schnelle Trick besteht darin, diese Zeichen zu aktivieren ( \catcode
to 13
) und sie nach unseren Wünschen zu definieren. Das einzige Problem in unserem Beispiel besteht darin, nicht in eine Endlosschleife zu geraten. Daher speichern wir die ursprünglichen Zeichen vor der Aktivierung in separaten Befehlen.
Normalerweise erledigen wir das alles in einer Gruppe, z. B. indem wir verwenden { }
, ich überspringe diesen Schritt.
Und voilà! Ich füge ein kleines Beispiel bei. Viel Spaß! :-)
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\begin{document}
% \the\fboxrule % If we wish to see the first used dimension...
% \the\fboxsep % If we wish to check the second used dimension...
% E.g., we wish to have a nice cozy rectangle across the whole mirror...
\parindent=0pt
% One paragraph typeset for checking purposes only...
text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text\par
% Let's compute the real width of the mirror...
\newdimen\temp % A declaration of a new dimension...
\temp=\textwidth % The width of the text minus
\advance\temp by -2\fboxrule % border from both sides minus
\advance\temp by -2\fboxsep % inner separator from both sides.
% Storage of the \boxed command created by the AMS... (amsmath.dtx).
\let\oldboxed=\boxed
% Redefinition of \boxed, let's use breakable inline mathematics...
\def\boxed#1{\fbox{\parbox{\temp}{$#1$}}}
% We'll make comma as an active character according to our wishes...
\def\mycomma{,}
\catcode`\,=13
\def,{\mycomma\allowbreak}
% The same strategy will be applied to one more used character...
\def\mymark{"}
\catcode`\"=13
\def"{\mymark\allowbreak}
% The core of our efforts...
\boxed{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"}\par
% And we are back in reality from our dreams... ;-)
\let\boxed=\oldboxed
\boxed{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"}
\end{document}
Ich habe nur \pagestyle{empty}
die Präambel des Dokuments hinzugefügt, um eine ordentliche beschnittene Version zu erhalten. Wenn wir eine nicht-mathematische Version bevorzugen, ändern Sie $#1$
sie bitte #1
in die Neudefinition des \boxed
Befehls.
Antwort2
Ich bin nicht sicher, ob Sie den Mathematikmodus falsch verwenden. Darin \boxed
können Sie jede der „inneren“ amsmath
Umgebungen verwenden. In diesem Fall habe ich Folgendes verwendet aligned
:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\begin{document}
\[
\boxed{
\!\begin{aligned}
&1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,\\
&a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
\end{aligned}
}
\]
\end{document}
Wenn Sie nicht an den Mathematikmodus gedacht haben, geben Sie bitte genauere Angaben.
Antwort3
Es ist auch hilfreich, ein Leerzeichen einzufügen.
\documentclass[12pt,a4paper]{article}
\newcounter{conto}
\setcounter{conto}{\time}
%\usepackage{lmodern}
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
%\usepackage{dsfont}
%\usepackage{mathrsfs}
\usepackage{amssymb,amsmath}
%\usepackage{cancel}
\begin{document}
\section{Prove}
\(
\fbox{\parbox{4in}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"}}
\)
\end{document}
Ich sollte erwähnen, dass Sie sich innerhalb der \parbox nicht mehr im Mathematikmodus befinden.
Antwort4
Sie können einen Stapel verwenden. Beachten Sie, dass das standardmäßige Zeilenendezeichen (EOL) ein Leerzeichen in stackengine
's ist \Longstack
, was für Ihr Beispiel gut funktioniert. Aber oft, wenn Ihr Stapel natürliche Leerzeichen enthält, müssen Sie das EOL für den Stapel ändern, was ich für den zweiten Stapel mache, indem ich \\
verwende \setstackEOL{}
. Außerdem führt die Verwendung von \stackMath
oder \stackText
dazu, dass die Stapelargumente als Mathematik bzw. Text interpretiert werden, wie ich auch zeige.
\documentclass[12pt,a4paper]{article}
\newcounter{conto}
\setcounter{conto}{\time}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{dsfont}
\usepackage{mathrsfs}
\usepackage{amssymb,amsmath}
\usepackage{cancel}
\usepackage{stackengine}
\begin{document}
\section{Prove}
\stackMath
\(\boxed{\Longstack{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
``a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z''}}\)
\section{Prove Again}
\setstackEOL{\\}
\stackText
\(\boxed{\Longstack{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20\\
``a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z''}}\)
\end{document}