
Eu tenho:
\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}
mas a saída é a seguinte:
Como iniciar uma nova linha \boxed{}
automaticamente?
Responder1
Boa noite, o \boxed
comando está definido no amsmath.{sty|dtx}
arquivo (que faz parte do amsmath
pacote), é:
\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}}
Podemos redefini-lo e usar a matemática embutida. Com a ajuda do \fbox
comando podemos desenhar um retângulo, a largura adequada é \textwidth-2\fboxrule-2\fboxsep
. O cerne do nosso trabalho é permitir a quebra de linhas nos devidos lugares (vírgulas, aspas) sem perdê-las, vamos usar \allowbreak
para esse fim.
O truque rápido é tornar esses personagens ativos ( \catcode
to 13
) e defini-los conforme nosso desejo. O único problema em nosso exemplo é não entrar em um loop infinito, portanto armazenamos os caracteres originais antes da ativação em comandos separados.
Geralmente fazemos tudo isso em grupo, por exemplo, usando { }
, estou pulando esta etapa.
E pronto! Anexo um pequeno exemplo. Aproveitar! :-)
\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}
Eu apenas adicionei \pagestyle{empty}
o preâmbulo do documento para obter uma versão recortada adequada. Se preferirmos uma versão não matemática, altere $#1$
para apenas #1
na redefinição do \boxed
comando.
Responder2
Não tenho certeza se você está usando mal o modo matemático; dentro \boxed
você pode usar qualquer um dos amsmath
ambientes “internos”, neste caso usei 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}
Por favor, seja mais preciso se o modo matemático não era o que você tinha em mente.
Responder3
Também ajuda adicionar um espaço em branco.
\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}
Devo mencionar que dentro do \parbox você não está mais no modo matemático.
Responder4
Você pode usar uma pilha. Observe que o caractere de fim de linha (EOL) padrão é um espaço em stackengine
's \Longstack
, o que funciona perfeitamente para o seu exemplo. Mas muitas vezes, se sua pilha contém espaços naturais, você precisa alterar o EOL da pilha, o que faço para a segunda pilha, para \\
, usando \setstackEOL{}
. Além disso, o uso de \stackMath
or \stackText
fará com que os argumentos de empilhamento sejam interpretados como matemática ou texto, respectivamente, como também mostro.
\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}