Comentários
===========

Um comentário na entrada do Maxima é qualquer texto entre /* e */.

O analisador do Maxima trata um comentário como espacedilhaão em branco para o propósito de encontrar indicacedilhaões no fluxo de entrada; uma indicacedilhaão sempre termina um comentário. Uma entrada tal como a/* foo */b contém duas indicacedilhaões, a e b, e não uma indicacedilhaão simples ab. Comentários são de outra ignorados pelo Maxima; nem o conteúdo nem a localizacedilhaão dos comentários são armazenados pelo analisador de expressões de entrada.

Comentários podem ser aninhados de forma a terem um nível de estratificacedilhaão arbitrario. O delimitador /* e o delimitador */ formam pares. A quantidade de /* deve ser a mesma quantidade de */.

Exemplos:

     (%i1) /* aa is a variable of interest */  aa : 1234;
     (%o1)                         1234
     (%i2) /* Value of bb depends on aa */  bb : aa^2;
     (%o2)                        1522756
     (%i3) /* User-defined infix operator */  infix ("b");
     (%o3)                           b
     (%i4) /* Parses same as a b c, not abc */  a/* foo */b/* bar */c;
     (%o4)                         a b c
     (%i5) /* Comments /* can be nested /* to arbitrary depth */ */ */  1 + xyz;
     (%o5)                        xyz + 1

Arquivos
========

Um arquivo é simplesmente uma área sobre um dispositivo particular de armazenagem que contém dados ou texto. Arquivos em disco são figurativamente agrupados dentro de "diretórios". Um diretório é apenas uma lista de arquivos. Comandos que lidam com arquivos são: save, load, loadfile, stringout, batch, demo, writefile, closefile, e appendfile.

Funcedilhaões e Variáveis Definidas para Entrada e Saída de Dados
=================================================================

 -- Variável de sistema: __
     __ é a expressão de entrada atualmente sendo avaliada. Isto é, enquanto um expressão de entrada EXPR está sendo avaliada, __ é EXPR.

     __ é atribuída à expressão de entrada antes de a entrada ser simplificada ou avaliada. Todavia, o valor de __ é simplificado (mas não avaliado) quando for mostrado.

     __ é reconhecido por batch e load. Em um arquivo processado por batch, __ tem o mesmo significado que na linha de comando interativa. Em um arquivo processado por load, __ está associado à expressão de entrada mais recentemente informada no prompt interativo ou em um arquivo de lote (batch); __ não é associado à expressões de entrada no arquivo que está sendo processado. Em particular, quando load (NOMEARQUIVO) for chamado a partir da linha de comando interativa, __ é associado a load (NOMEARQUIVO) enquanto o arquivo está sendo processado.

     Veja também _ e %.

     Exemplos:

          (%i1) print ("Eu fui chamada como", __);
          Eu fui chamada como print(Eu fui chamada como, __)
          (%o1)              print(Eu fui chamada como, __)
          (%i2) foo (__);
          (%o2)                     foo(foo(__))
          (%i3) g (x) := (print ("Expressão atual de entrada =", __), 0);
          (%o3) g(x) := (print("Expressão atual de entrada =", __), 0)
          (%i4) [aa : 1, bb : 2, cc : 3];
          (%o4)                       [1, 2, 3]
          (%i5) (aa + bb + cc)/(dd + ee + g(x));
                                         cc + bb + aa
          Expressão atual de entrada = --------------
                                        g(x) + ee + dd
                                          6
          (%o5)                        -------
                                       ee + dd

 -- Variável de sistema: _

     _ é a mais recente expressão de  entrada (e.g., %i1, %i2, %i3, ...).

     A _ é atribuída à expressão de entrada antes dela ser simplificada ou avaliada. Todavia, o valor de _ é simplificado (mas não avaliado) quando for mostrado.

     _ é reconhecido por batch e load. Em um arquivo processado por batch, _ tem o mesmo significado que na linha de comando interativa. Em um arquivo processado por load load, _ está associado à expressão de entrada mais recentemente avaliada na linha de comando interativa ou em um arquivo de lote; _ não está associada a expressões de entrada no arquivo que está sendo processado.

     Veja também __ e %.

     Exemplos:

          (%i1) 13 + 29;
          (%o1)                          42
          (%i2) :lisp $_
          ((MPLUS) 13 29)
          (%i2) _;
          (%o2)                          42
          (%i3) sin (%pi/2);
          (%o3)                           1
          (%i4) :lisp $_
          ((%SIN) ((MQUOTIENT) $%PI 2))
          (%i4) _;
          (%o4)                           1
          (%i5) a: 13$
          (%i6) b: 29$
          (%i7) a + b;
          (%o7)                          42
          (%i8) :lisp $_
          ((MPLUS) $A $B)
          (%i8) _;
          (%o8)                         b + a
          (%i9) a + b;
          (%o9)                          42
          (%i10) ev (_);
          (%o10)                         42

 -- Variável de sistema: %
     % é a expressão de saída (e.g., %o1, %o2, %o3, ...) mais recentemente calculada pelo Maxima, pode ou não ser mostrada.

     % é reconhecida por batch e load. Em um arquivo processado por batch, % tem o mesmo significado que na linha de comando interativa. Em um arquivo processado por load, % é associado à expressão de entrada mais recentemente calculada na linha de comando interativa ou em um arquivo de lote; % não está associada a expressões de saída no arquivo que está sendo processado.

     Veja também _, %%, e %th

 -- Variável de sistema: %%
     Em declaracedilhaão composta, a saber block, lambda, ou (S_1, ..., S_N), %% é os valor da declaracedilhaão anterior. Por exemplo,

          block (integrate (x^5, x), ev (%%, x=2) - ev (%%, x=1));
          block ([prev], prev: integrate (x^5, x), ev (prev, x=2) - ev (prev, x=1));

     retornam o mesmo resultado, a saber 21/2.

     Uma declaracedilhaão composta pode compreender outras declaracedilhaões compostas. Pode uma declaracedilhaão ser simples ou composta, %% é o valor da declaracedilhaão anterior. Por exemplo,

          block (block (a^n, %%*42), %%/6)

     retorna 7*a^n.

     Dentro da declaracedilhaão composta, o valor de %% pode ser inspecionado em uma parada de linha de comando, que é aberta pela execucedilhaão da funcedilhaão break. Por exemplo, na parada de linha de comando aberta por

          block (a: 42, break ())$

     digitando %%; retorna 42.

     Na primeira declaracedilhaão em uma declaracedilhaão composta, ou fora de uma declaracedilhaão composta, %% é indefinido.

     %%  reconhecido por batch e load, e possem o mesmo significao que na linha de comando interativa.

     Veja também %.

 -- Variável de opcedilhaão: %edispflag
     Valor padrão: false

     Quando %edispflag for true, Maxima mostra %e para um expoente negativo como um quociente. Por exemplo, %e^-x é mostrado como 1/%e^x.

 -- Funcedilhaão: %th (I)
     O valor da I'ésima expressão prévia de saída. Isto é, se a próxima expressão a ser calculada for a N'ésima saída, %th (M) será a (N - M)'ésima saída.

     %th é útil em arquivos batch ou para referir-se a um grupo de expressões de saída. Por exemplo,

          block (s: 0, for i:1 thru 10 do s: s + %th (i))$

     atribui à variável s a soma das últimas dez expressões de saída.

     %th é reconhecido por batch e load. Em um arquivo processado por batch, %th possue o mesmo significado que na linha de comando interativa. Em um arquivo processado por load, %th refere-se a expressões de saída mais recentemente calculadas na linha de comando interativa ou em um arquivo de lote; %th não se refere a expressões de saída no arquivo que está sendo processado.

     Veja também %.

 -- Símbolo especial: ?
     Como prefixo para uma funcedilhaão ou nome de variável, ? significa que o nome é um nome Lisp, não um nome Maxima. Por exemplo, ?round significa a funcedilhaão Lisp ROUND. Veja Lisp e Maxima para mais sobre esse ponto.

     A notacedilhaão ? palavra (um ponto de interrogacedilhaão seguido de uma palavra e separado desta por um espacedilhao em branco) é equivalente a describe("palavra"). O ponto de interrogacedilhaão deve aparecer no início de uma linha de entrada; de outra forma o ponto de interrogacedilhaão não é reconhecido com um pedido de documentacedilhaão.

 -- Símbolo especial: ??

     A notacedilhaão ?? palavra (?? seguido de um espacedilhao em branco e uma palavra) é equivalente a describe("palavra", inexact). O ponto de interrogacedilhaão deve ocorrer no início de uma linha de entrada; de outra forma não é reconhecido com um pedido de documentacedilhaão.

 -- Variável de opcedilhaão: absboxchar
     Valor padrão: !

     absboxchar é o caracter usado para para desenhar o sinal de valor absoluto em torno de expressões que são maiores que uma linha de altura.

 -- Variável de opcedilhaão: file_output_append
     Valor padrão: false

     file_output_append governa se funcedilhaões de saída de arquivo anexam ao final ou truncam seu arquivo de saída. Quando file_output_append for true, tais funcedilhaões anexam ao final de seu arquivo de saída. De outra forma, o arquivo de saída é truncado.

     save, stringout, e with_stdout respeitam file_output_append. Outras funcedilhaões que escrevem arquivos de saída não respeitam file_output_append. Em particular, montagem de gráficos e traducedilhaões de funcedilhaões sempre truncam seu arquivo de saída, e tex e appendfile sempre anexam ao final.

 -- Funcedilhaão: appendfile (NOMEARQUIVO)
     Adiciona ao final de NOMEARQUIVO uma transcricedilhaão do console. appendfile é o mesmo que writefile, exceto que o arquivo transcrito, se já existe, terá sempre alguma coisa adicionada ao seu final.

     closefile fecha o arquivo transcrito que foi aberto anteriormente por appendfile ou por writefile.

 -- Funcedilhaão: batch (NOMEARQUIVO)
     Lê expressões Maxima do arquivo NOMEARQUIVO e as avalia. batch procura pelo arquivo NOMEARQUIVO na lista file_search_maxima. Veja file_search.

     NOMEARQUIVO compreende uma seqüência de expressões Maxima, cada uma terminada com ; ou $. A varável especial % e a funcedilhaão %th referem-se a resultados prévios dentro do arquivo. O arquivo pode incluir construcedilhaões :lisp. Espacedilhaos, tabulacedilhaões, e o caracter de nova linha no arquivo serão ignorados. um arquivo de entrada conveniente pode ser criado por um editor de texto ou pela funcedilhaão stringout.

     batch lê cada expressão de entrada de NOMEARQUIVO, mostra a entrada para o console, calcula a correspondente expressão de saída, e mostra a expressão de saída. Rótulos de entrada são atribuídos para expressões de entrada e rótulos de saída são atribuídos para expressões de saída. batch avalia toda expressão de entrada no arquivo a menos que exista um erro. Se uma entrada de usuário for requisitada (por asksign ou por askinteger, por exemplo) batch interrompe para coletar a entrada requisitada e então continua.

     O recurso de requisicedilhaão de entrada ao usuário possibilita interromper batch pela digitacedilhaão de control-C no console. O efeito de control-C depende da subjacente implementacedilhaão do Lisp.

     batch tem muitos usos, tais como fornecer um reservatório para trabalhar linhas de comando, para fornecer demonstracedilhaões livres de erros, ou para ajudar a organizar alguma coisa na solucedilhaão de problemas complexos.

     batch avalia seu argumento. batch não possui valor de retorno.

     Veja também load, batchload, e demo.

 -- Funcedilhaão: batchload (NOMEARQUIVO)
     Lê expressões Maxima de NOMEARQUIVO e as avalia, sem mostrar a entrada ou expressões de saída e sem atribuir rótulos para expressões de saída. Saídas impressas (tais como produzidas por print ou describe) são mostradas, todavia.

     A variável especial % e a funcedilhaão %th referem-se a resultados anteriores do interpretador interativo, não a resultados dentro do arquivo. O arquivo não pode incluir construcedilhaões :lisp.

     batchload retorna o caminho de NOMEARQUIVO, como uma seqüência de caracteres. batchload avalia seu argumento.

     Veja também batch e load.

 -- Funcedilhaão: closefile ()
     Fecha o arquivo transcrito aberto por writefile ou appendfile.

 -- Funcedilhaão: collapse (EXPR)
     Reduz EXPR fazendo com que todas as suas subexpressões comuns (i.e., iguais)  sejam compartilhadas (i.e., usam a mesma células), dessa forma economizando espacedilhao.  (collapse é uma subrotina usada pelo comando optimize.)  Dessa forma, chamar collapse pode ser útil após um save arquivo.  Você pode diminuir muitas expressões juntas pelo uso de collapse ([EXPR_1, ..., EXPR_N]).  Similarmente, você pode diminuir os elementos de um array A fazendo collapse (listarray ('A)).

 -- Funcedilhaão: concat (ARG_1, ARG_2, ...)
     Concatena seus argumentos. Os argumentos devem obrigatóriamente serem avaliados para atomos. O valor de retorno ou é um símbolo se o primeiro argumento for um símbolo ou é uma seqüência de caracteres no formato do Maxima em caso contrário.

     concat avalia seus argumentos. O apóstrofo ' evita avaliacedilhaão.

          (%i1) y: 7$
          (%i2) z: 88$
          (%i3) concat (y, z/2);
          (%o3)                          744
          (%i4) concat ('y, z/2);
          (%o4)                          y44

     Um símbolo construído por concat pode ser atribuído a um valor e aparecer em expressões. O operador de atribuicedilhaão :: (duplo dois pontos) avalia seu lado esquerdo.

          (%i5) a: concat ('y, z/2);
          (%o5)                          y44
          (%i6) a:: 123;
          (%o6)                          123
          (%i7) y44;
          (%o7)                          123
          (%i8) b^a;
                                         y44
          (%o8)                         b
          (%i9) %, numer;
                                         123
          (%o9)                         b

     Note que embora concat (1, 2) seja visto como números no console, na realidade é uma seqüência de caracteres no formato do Maxima.

          (%i10) concat (1, 2) + 3;
          (%o10)                       12 + 3

 -- Funcedilhaão: sconcat (ARG_1, ARG_2, ...)

     Concatena seus argumentos em uma seqüência de caracteres. Ao contrário de concat, os argumentos arrumados não precisam ser atômicos.

     O resultado é uma seqüência de caracteres no format do Lisp.

          (%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
          (%o1)               xx[3]:y^3+3*x*y^2+3*x^2*y+x^3

 -- Funcedilhaão: disp (EXPR_1, EXPR_2, ...)
     é como display mas somente os valores dos argumentos são mostrados em lugar de equacedilhaões.  A funcedilhaão disp é útil para argumentos complicados que não possuem nomes ou onde somente o valor do argumento é de interesse e não o nome.

 -- Funcedilhaão: dispcon (TENSOR_1, TENSOR_2, ...)
 -- Funcedilhaão: dispcon (all)
     Mostra as propriedades de contracedilhaão de seus argumentos da forma que foram dadas para defcon.  dispcon (all) mostra todas as propriedades de contracedilhaão que foram definidas.

 -- Funcedilhaão: display (EXPR_1, EXPR_2, ...)
     Mostra equacedilhaões cujo lado esquerdo é EXPR_I não avaliado, e cujo lado direito é o valor da expressão centrada na linha.  Essa funcedilhaão é útil em blocos e em for declaracedilhaões com o objetivo de ter resultados intermediários mostrados.  Os argumentos para display são usualmente átomos, variáveis com subscritos, ou chamadas de funcedilhaão.  Veja também disp.

          (%i1) display(B[1,2]);
                                                2
                                   B     = X - X
                                    1, 2
          (%o1)                            done

 -- Variável de opcedilhaão: display2d
     Valor padrão: true

     Quando display2d for false, O console visualizador é da forma de uma seqüência de caracteres (unidimensional) ao invés da forma bidimensional.

 -- Variável de opcedilhaão: display_format_internal
     Valor padrão: false

     Quando display_format_internal é true, expressões são mostradas sem ser por caminhos que escondam a representacedilhaão matemática interna.  O visualizador então corresponde ao que inpart retorna em lugar de part.

     Exemplos:

          User     part       inpart
          a-b;      A - B     A + (- 1) B

                     A            - 1
          a/b;       -         A B
                     B
                                 1/2
          sqrt(x);   sqrt(X)    X

                    4 X        4
          X*4/3;    ---        - X
                     3         3

 -- Funcedilhaão: dispterms (EXPR)
     Mostra EXPR em partes uma abaixo da outra. Isto é, primeiro o operador de EXPR é mostrado, então cada parcela em uma adicedilhaão, ou fatores em um produto, ou parte de uma expressão mais geral é mostrado separadamente.  Isso é útil se EXPR é muito larga para ser mostrada de outra forma.  Por exemplo se P1, P2, ...  são expressões muito largas então o programa visualizador pode sair fora do espacedilhao de armazenamento na tentativa de mostrar P1 + P2 + ...  tudo de uma vez.  Todavia, dispterms (P1 + P2 + ...) mostra P1, então abaixo disso P2, etc.  Quando não usando dispterms, se uma expressão exponencial é muito alta para ser mostrada como A^B isso aparece como expt (A, B) (ou como ncexpt (A, B) no caso de A^^B).

 -- Variável de opcedilhaão: error_size
     Valor padrão: 10

     error_size modifica mensagens de erro conforme o tamanho das expressões que aparecem nelas. Se o tamanho de uma expressão (como determinado pela funcedilhaão Lisp ERROR-SIZE) é maior que error_size, a expressão é substituída na mensagem por um símbolo, e o o símbolo é atribuído à expressão. Os símbolos são obtidos da lista error_syms.

     De outra forma, a expressão é menor que error_size, e a expressão é mostrada na mensagem.

     Veja também error e error_syms.

     Exemplo:

     O tamanho de U, como determinado por ERROR-SIZE, é 24.

          (%i1) U: (C^D^E + B + A)/(cos(X-1) + 1)$

          (%i2) error_size: 20$

          (%i3) error ("Expressão exemplo é", U);

          Expressão exemplo é errexp1
           -- an error.  Quitting.  To debug this try debugmode(true);
          (%i4) errexp1;
                                      E
                                     D
                                    C   + B + A
          (%o4)                    --------------
                                   cos(X - 1) + 1
          (%i5) error_size: 30$

          (%i6) error ("Expressão exemplo é", U);

                                     E
                                    D
                                   C   + B + A
          Expressão exemplo é --------------
                                  cos(X - 1) + 1
           -- an error.  Quitting.  To debug this try debugmode(true);

 -- Variável de opcedilhaão: error_syms
     Valor padrão: [errexp1, errexp2, errexp3]

     Em mensagens de erro, expressões mais largas que error_size são substituídas por símbolos, e os símbolos são escolhidos para as expressões.  Os símbolos são obtidos da lista error_syms. A primeira expressão muito larga é substituída por error_syms[1], a segunda por error_syms[2], e assim por diante.

     Se houverem mais expressões muito largas que há elementos em error_syms, símbolos são construídos automaticamente, com o N-ésimo símbolo equivalente a concat ('errexp, N).

     Veja também error e error_size.

 -- Funcedilhaão: expt (A, B)
     Se uma expressão exponencial é muito alta para ser mostrada cmo A^B isso aparece como expt (A, B) (ou como ncexpt (A, B) no caso de A^^B).

     expt e ncexpt não são reconhecidas em entradas.

 -- Variável de opcedilhaão: exptdispflag
     Valor padrão: true

     Quando exptdispflag é true, Maxima mostra expressões com expoente negativo usando quocientes, e.g., X^(-1) como 1/X.

 -- Funcedilhaão: filename_merge (PATH, NOMEARQUIVO)
     Constroem um caminho modificado de PATH e NOMEARQUIVO. Se o componente final de PATH é da forma ###.ALGUMACOISA, o componente é substituído com NOMEARQUIVO.ALGUMACOISA. De outra forma, o componente final é simplesmente substituído por NOMEARQUIVO.

 -- Funcedilhaão: file_search (NOMEARQUIVO)
 -- Funcedilhaão: file_search (NOMEARQUIVO, LISTACAMINHO)

     file_search procura pelo arquivo NOMEARQUIVO e retorna o caminho para o arquivo (como uma seqüência de caracteres) se ele for achado; de outra forma file_search retorna false. file_search (NOMEARQUIVO) procura nos diretórios padrões de busca, que são especificados pelas variáveis file_search_maxima, file_search_lisp, e file_search_demo.

     file_search primeiro verifica se o nome atual passado existe, antes de tentar coincidir esse nome atual com o modelo ``coringa'' de busca do arquivo. Veja file_search_maxima concernente a modelos de busca de arquivos.

     O argumento NOMEARQUIVO pode ser um caminho e nome de arquivo, ou apenas um nome de arquivo, ou, se um diretório de busca de arquivo inclui um modelo de busca de arquivo, apenas a base do nome de arquivo (sem uma extensão). Por exemplo,

          file_search ("/home/wfs/special/zeta.mac");
          file_search ("zeta.mac");
          file_search ("zeta");

     todos encontram o mesmo arquivo, assumindo que o arquivo exista e /home/wfs/special/###.mac está em file_search_maxima.

     file_search (NOMEARQUIVO, LISTACAMINHO) procura somente nesses diretórios especificados por LISTACAMINHO, que é uma lista de seqüências de caracteres. O argumento LISTACAMINHO substitui os diretórios de busca padrão, então se a lista do caminho é dada, file_search procura somente nesses especificados, e não qualquer dos diretórios padrão de busca. Mesmo se existe somente um diretório em LISTACAMINHO, esse deve ainda ser dado como uma lista de um único elemento.

     O usuário pode modificar o diretório de busca padrão.  Veja file_search_maxima.

     file_search é invocado por load com file_search_maxima e file_search_lisp como diretórios de busca.

 -- Variável de opcedilhaão: file_search_maxima
 -- Variável de opcedilhaão: file_search_lisp
 -- Variável de opcedilhaão: file_search_demo
     Essas variáveis especificam listas de diretórios a serem procurados por load, demo, e algumas outras funcedilhaões do Maxima. O valor padrão dessas variáveis nomeia vários diretórios na instalacedilhaã padrão do Maxima.

     O usuáro pode modificar essas variáveis, quer substituindo os valores padrão ou colocando no final diretórios adicionais. Por exemplo,

          file_search_maxima: ["/usr/local/foo/###.mac",
              "/usr/local/bar/###.mac"]$

     substitui o valor padrão de file_search_maxima, enquanto

          file_search_maxima: append (file_search_maxima,
              ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$

     adiciona no final da lista dois diretórios adicionais. Isso pode ser conveniente para colocar assim uma expressão no arquivo maxima-init.mac de forma que o caminho de busca de arquivo é atribuído automaticamente quando o Maxima inicia.

     Multiplas extensões de arquivo e e multiplos caminhos podem ser especificados por construcedilhaões ``coringa'' especiais. A seqüência de caracteres ### expande a busca para além do nome básico, enquanto uma lista separada por vírgulas e entre chaves {foo,bar,baz} expande em multiplas seqüências de caracteres. Por exemplo, supondo que o nome básico a ser procurado seja neumann,

          "/home/{wfs,gcj}/###.{lisp,mac}"

     expande em /home/wfs/neumann.lisp, /home/gcj/neumann.lisp, /home/wfs/neumann.mac, e /home/gcj/neumann.mac.

 -- Funcedilhaão: file_type (NOMEARQUIVO)
     Retorna uma suposta informacedilhaão sobre o conteúdo de NOMEARQUIVO, baseada na extensão do arquivo. NOMEARQUIVO não precisa referir-se a um arquivo atual; nenhuma tentativa é feita para abrir o arquivo e inspecionar seu conteúdo.

     O valor de retorno é um símbolo, qualquer um entre object, lisp, ou maxima. Se a extensão comecedilhaa com m ou d, file_type retorna maxima. Se a extensão comecedilhaa om l, file_type retorna lisp. Se nenhum dos acima, file_type retorna object.

 -- Funcedilhaão: grind (EXPR)
 -- Variável de opcedilhaão: grind
     A funcedilhaão grind imprime EXPR para o console em uma forma adequada de entrada para Maxima. grind sempre retorna done.

     Quando EXPR for um nome de uma funcedilhaão ou o nome de uma macro, grind mostra na tela a definicedilhaão da funcedilhaão ou da macro em lugar de apenas o nome.

     Veja também string, que retorna uma seqüência de caracteres em lugar de imprimir sua saída. grind tenta imprimir a expressão de uma maneira que a faz levemente mais fácil para ler que a saída de string.

     Quando a variável grind é true, a saída de string e stringout tem o mesmo formato que grind; de outra forma nenhuma tentativa é feita para formatar especialmente a saída dessas funcedilhaões. O valor padrão da variável grind é false.

     grind pode também ser especificado como um argumento de playback. Quando grind está presente, playback imprime expressões de entrada no mesmo formato que a funcedilhaão grind. De outra forma, nenhuma tentativa é feita para formatar especialmente as expressões de entrada.

     grind avalia seus argumentos.

     Exemplos:

          (%i1) aa + 1729;
          (%o1)                       aa + 1729
          (%i2) grind (%);
          aa+1729$
          (%o2)                         done
          (%i3) [aa, 1729, aa + 1729];
          (%o3)                 [aa, 1729, aa + 1729]
          (%i4) grind (%);
          [aa,1729,aa+1729]$
          (%o4)                         done
          (%i5) matrix ([aa, 17], [29, bb]);
                                     [ aa  17 ]
          (%o5)                      [        ]
                                     [ 29  bb ]
          (%i6) grind (%);
          matrix([aa,17],[29,bb])$
          (%o6)                         done
          (%i7) set (aa, 17, 29, bb);
          (%o7)                   {17, 29, aa, bb}
          (%i8) grind (%);
          {17,29,aa,bb}$
          (%o8)                         done
          (%i9) exp (aa / (bb + 17)^29);
                                          aa
                                      -----------
                                               29
                                      (bb + 17)
          (%o9)                     %e
          (%i10) grind (%);
          %e^(aa/(bb+17)^29)$
          (%o10)                        done
          (%i11) expr: expand ((aa + bb)^10);
                   10           9        2   8         3   7         4   6
          (%o11) bb   + 10 aa bb  + 45 aa  bb  + 120 aa  bb  + 210 aa  bb
                   5   5         6   4         7   3        8   2
           + 252 aa  bb  + 210 aa  bb  + 120 aa  bb  + 45 aa  bb
                  9        10
           + 10 aa  bb + aa
          (%i12) grind (expr);
          bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6
               +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2
               +10*aa^9*bb+aa^10$
          (%o12)                        done
          (%i13) string (expr);
          (%o13) bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6\
          +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2+10*aa^9*\
          bb+aa^10
          (%i14) cholesky (A):= block ([n : length (A), L : copymatrix (A),
          p : makelist (0, i, 1, length (A))], for i thru n do for j : i thru n do
          (x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1), if i = j then
          p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]), for i thru n do L[i, i] : 1 / p[i],
          for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
          (%i15) grind (cholesky);
          cholesky(A):=block(
                   [n:length(A),L:copymatrix(A),
                    p:makelist(0,i,1,length(A))],
                   for i thru n do
                       (for j from i thru n do
                            (x:L[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),
                             if i = j then p[i]:1/sqrt(x)
                                 else L[j,i]:x*p[i])),
                   for i thru n do L[i,i]:1/p[i],
                   for i thru n do (for j from i+1 thru n do L[i,j]:0),L)$
          (%o15)                        done
          (%i16) string (fundef (cholesky));
          (%o16) cholesky(A):=block([n:length(A),L:copymatrix(A),p:makelis\
          t(0,i,1,length(A))],for i thru n do (for j from i thru n do (x:L\
          [i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),if i = j then p[i]:1/sqrt(x\
          ) else L[j,i]:x*p[i])),for i thru n do L[i,i]:1/p[i],for i thru \
          n do (for j from i+1 thru n do L[i,j]:0),L)

 -- Variável de opcedilhaão: ibase
     Valor padrão: 10

     Inteiros fornecidos dentro do Maxima são interpretados com respeito à base ibase.

     A ibase pode ser atribuído qualquer inteiro entre 2 e 35 (decimal), inclusive. Quando ibase é maior que 10, os numerais compreendem aos numerais decimais de 0 até 9 mais as letras maiúsculas do alfabeto A, B, C, ..., como necessário. Os numerais para a base 35, a maior base aceitável, compreendem de 0 até 9 e de A até Y.

     Veja também obase.

 -- Variável de opcedilhaão: inchar
     Valor padrão: %i

     inchar é o prefixo dos rótulos de expressões fornecidas pelo usuário. Maxima automaticamente constrói um rótulo para cada expressão de entrada por concatenacedilhaão de inchar e linenum. A inchar pode ser atribuído qualquer seqüência de caracteres ou símbolo, não necessariamente um caracter simples.

          (%i1) inchar: "input";
          (%o1)                                input
          (input1) expand ((a+b)^3);
                                      3        2      2      3
          (%o1)                      b  + 3 a b  + 3 a  b + a
          (input2)

     Veja também labels.

 -- Funcedilhaão: ldisp (EXPR_1, ..., EXPR_N)
     Mostra expressões EXPR_1, ..., EXPR_N para o console como saída impressa na tela. ldisp atribue um rótulo de expressão intermediária a cada argumento e retorna a lista de rótulos.

     Veja também disp.

          (%i1) e: (a+b)^3;
                                             3
          (%o1)                       (b + a)
          (%i2) f: expand (e);
                               3        2      2      3
          (%o2)               b  + 3 a b  + 3 a  b + a
          (%i3) ldisp (e, f);
                                             3
          (%t3)                       (b + a)

                               3        2      2      3
          (%t4)               b  + 3 a b  + 3 a  b + a

          (%o4)                      [%t3, %t4]
          (%i4) %t3;
                                             3
          (%o4)                       (b + a)
          (%i5) %t4;
                               3        2      2      3
          (%o5)               b  + 3 a b  + 3 a  b + a

 -- Funcedilhaão: ldisplay (EXPR_1, ..., EXPR_N)
     Mostra expressões EXPR_1, ..., EXPR_N para o console como saída impressa na tela. Cada expressão é impressa como uma equacedilhaão da forma lhs = rhs na qual lhs é um dos argumentos de ldisplay e rhs é seu valor. Tipicamente cada argumento é uma variável. ldisp atribui um rótulo de expressão intermediáia a cada equacedilhaão e retorna a lista de rótulos.

     Veja também display.

          (%i1) e: (a+b)^3;
                                             3
          (%o1)                       (b + a)
          (%i2) f: expand (e);
                               3        2      2      3
          (%o2)               b  + 3 a b  + 3 a  b + a
          (%i3) ldisplay (e, f);
                                               3
          (%t3)                     e = (b + a)

                                 3        2      2      3
          (%t4)             f = b  + 3 a b  + 3 a  b + a

          (%o4)                      [%t3, %t4]
          (%i4) %t3;
                                               3
          (%o4)                     e = (b + a)
          (%i5) %t4;
                                 3        2      2      3
          (%o5)             f = b  + 3 a b  + 3 a  b + a

 -- Variável de opcedilhaão: linechar
     Valor padrão: %t

     linechar é o refixo de rótulos de expressões intermediárias gerados pelo Maxima. Maxima constrói um rótulo para cada expressão intermediária (se for mostrada) pela concatenacedilhaão de linechar e linenum. A linechar pode ser atribuído qualquer seqüência de caracteres ou símbolo, não necessáriamente um caractere simples.

     Expressões intermediárias podem ou não serem mostradas. See programmode e labels.

 -- Variável de opcedilhaão: linel
     Valor padrão: 79

     linel é a largura assumida (em caracteres) do console para o propósito de mostrar expressões. A linel pode ser atribuído qualquer valor pelo usuário, embora valores muio pequenos ou muito grandes possam ser impraticáveis. Textos impressos por funcedilhaões internas do Maxima, tais como mensagens de erro e a saída de describe, não são afetadas por linel.

 -- Variável de opcedilhaão: lispdisp
     Valor padrão: false

     Quando lispdisp for true, símbolos Lisp são mostrados com um ponto de interrogacedilhaão ? na frente. De outra forma, símbolos Lisp serão mostrados sem o ponto de interrogacedilhaõ na frente.

     Exemplos:

          (%i1) lispdisp: false$
          (%i2) ?foo + ?bar;
          (%o2)                       foo + bar
          (%i3) lispdisp: true$
          (%i4) ?foo + ?bar;
          (%o4)                      ?foo + ?bar

 -- Funcedilhaão: load (NOMEARQUIVO)
     Avalia expressões em NOMEARQUIVO, dessa forma conduzindo variáveis, funcedilhaões, e outros objetos dentro do Maxima. A associacedilhaão de qualquer objeto existente é substituída pela associacedilhaão recuperada de NOMEARQUIVO. Para achar o arquivo, load chama file_search com file_search_maxima e file_search_lisp como diretórios de busca. Se load obtém sucesso, isso retorna o nome do arquivo. De outra forma load imprime uma mensagem e erro.

     load trabalha igualmente bem para códigos Lisp e códigos Maxima. Arquivos criados por save, translate_file, e compile_file, que criam códigos Lisp, e stringout, que criam códigos Maxima, podem ser processadas por load. load chama loadfile para carregar arquivos Lisp e batchload para carregar arquivos Maxima.

     load não reconhece construcedilhaões :lisp em arquivos do Maxima, e quando processando NOMEARQUIVO, as variáveis globais _, __, %, e %th possuem as mesmas associacedilhaões que possuiam quando load foi chamada.

     Veja também loadfile, batch, batchload, e demo. loadfile processa arquivos Lisp; batch, batchload, e demo processam arquivos Maxima.

     Veja file_search para mais detalhes sobre o mecanismo de busca de arquivos.

     load avalia seu argumento.

 -- Funcedilhaão: loadfile (NOMEARQUIVO)
     Avalia expressões Lisp em NOMEARQUIVO. loadfile não invoca file_search, então nomearquivo deve obrigatóriamente incluir a extensão do arquivo e tanto quanto o caminho como necessário para achar o arquivo.

     loadfile pode processar arquivos criados por save, translate_file, e compile_file. O usuário pode achar isso mais conveniente para usar load em lugar de loadfile.

 -- Variável de opcedilhaão: loadprint
     Valor padrão: true

     loadprint diz se deve imprimir uma mensagem quando um arquivo é chamado.

       * Quando loadprint é true, sempre imprime uma mensagem.

       * Quando loadprint é 'loadfile, imprime uma mensagem somente se um arquivo é chamado pela funcedilhaão loadfile.

       * Quando loadprint é 'autoload, imprime uma mensagem somente se um arquivo é automaticamente carregado. Veja setup_autoload.

       * Quando loadprint é false, nunca imprime uma mensagem.

 -- Variável de opcedilhaão: obase
     Valor padrão: 10

     obase é a base para inteiros mostrados pelo Maxima.

     A obase poode ser atribuído qualquer inteiro entre 2 e 35 (decimal), inclusive. Quando obase é maior que 10, os numerais compreendem os numerais decimais de 0 até 9 e letras maiúsulas do alfabeto A, B, C, ..., quando necessário. Os numerais para a base 35, a maior base aceitável, compreendem de 0 até 9, e de A até Y.

     Veja também ibase.

 -- Variável de opcedilhaão: outchar
     Valor padrão: %o

     outchar é o prefixo dos rótulos de expressões calculadas pelo Maxima. Maxima automaticamente constrói um rótulo para cada expressão calculada pela concatenacedilhaão de outchar e linenum. A outchar pode ser atribuído qualquer seqüência de caracteres ou símbolo, não necessáriamente um caractere simples.

          (%i1) outchar: "output";
          (output1)                           output
          (%i2) expand ((a+b)^3);
                                      3        2      2      3
          (output2)                  b  + 3 a b  + 3 a  b + a
          (%i3)

     Veja também labels.

 -- Variável de opcedilhaão: packagefile
     Valor padrão: false

     Projetistas de pacotes que usam save ou translate para criar pacotes (arquivos) para outros usarem podem querer escolher packagefile: true para prevenir qu informacedilhaões sejam acrescentadas à lista de informacedilhaões do Maxima (e.g. values, funcedilhaões) exceto onde necessário quando o arquivo é carregado. Nesse caminho, o conteúdo do pacote não pegará no caminho do usuário quando ele adicionar seus próprios dados.  Note que isso não resolve o problema de possíveis conflitos de nome.  Também note que o sinalizador simplesmente afeta o que é saída para o arquivo pacote. Escolhendo o sinalizador para true é também útil para criar arquivos de init do Maxima.

 -- Variável de opcedilhaão: pfeformat
     Valor padrão: false

     Quando pfeformat é true, uma razão de inteiros é mostrada com o caractere sólido (barra normal), e um denominador inteiro n é mostrado como um termo multiplicativo em primeiro lugar 1/n.

          (%i1) pfeformat: false$
          (%i2) 2^16/7^3;
                                        65536
          (%o2)                         -----
                                         343
          (%i3) (a+b)/8;
                                        b + a
          (%o3)                         -----
                                          8
          (%i4) pfeformat: true$
          (%i5) 2^16/7^3;
          (%o5)                       65536/343
          (%i6) (a+b)/8;
          (%o6)                      1/8 (b + a)

 -- Funcedilhaão: print (EXPR_1, ..., EXPR_N)
     Avalia e mostra EXPR_1, ..., EXPR_N uma após a outra, da esquerda para a direita, iniciando no lado esquerdo do console.

     O valor retornado por print é o valor de seu último argumento. print não gera rótulos de expressão intermediária.

     Veja também display, disp, ldisplay, e ldisp. Essas funcedilhaões mostram uma expressão por linha, enquanto print tenta mostrar duas ou mais expressões por linha.

     Para mostrar o conteúdo de um arquivo, veja printfile.

          (%i1) r: print ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is", radcan (log (a^10/b)))$
                      3        2      2      3
          (a+b)^3 is b  + 3 a b  + 3 a  b + a  log (a^10/b) is

                                                        10 log(a) - log(b)
          (%i2) r;
          (%o2)                  10 log(a) - log(b)
          (%i3) disp ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is", radcan (log (a^10/b)))$
                                     (a+b)^3 is

                               3        2      2      3
                              b  + 3 a b  + 3 a  b + a

                                   log (a^10/b) is

                                 10 log(a) - log(b)

 -- Funcedilhaão: tcl_output (LIST, I0, SKIP)
 -- Funcedilhaão: tcl_output (LIST, I0)
 -- Funcedilhaão: tcl_output ([LIST_1, ..., LIST_N], I)

     Imprime os elementos de uma lista entre chaves { }, conveniente como parte de um programa na linguagem Tcl/Tk.

     tcl_output (LIST, I0, SKIP) imprime LIST, comecedilhaando com o elemento I0 e imprimindo elementos I0 + SKIP, I0 + 2 SKIP, etc.

     tcl_output (LIST, I0) é equivalente a tcl_output (LIST, I0, 2).

     tcl_output ([LIST_1, ..., LIST_N], I) imprime os I'ésimos elementos de LIST_1, ..., LIST_N.

     Exemplos:

          (%i1) tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$

           {1.000000000     4.000000000
           }
          (%i2) tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$

           {2.000000000     5.000000000
           }
          (%i3) tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$

           {((RAT SIMP) 3 7) ((RAT SIMP) 11 13)
           }
          (%i4) tcl_output ([x1, y1, x2, y2, x3, y3], 2)$

           {$Y1 $Y2 $Y3
           }
          (%i5) tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$

           {SIMP 1.000000000     11.00000000
           }

 -- Funcedilhaão: read (EXPR_1, ..., EXPR_N)
     Imprime EXPR_1, ..., EXPR_N, então lê uma expressão do console e retorna a expressão avaliada. A expressão é terminada com um ponto e vírgula ; ou o sinal de dólar $.

     Veja também readonly.

          (%i1) foo: 42$
          (%i2) foo: read ("foo is", foo, " -- enter new value.")$
          foo is 42  -- enter new value.
          (a+b)^3;
          (%i3) foo;
                                               3
          (%o3)                         (b + a)

 -- Funcedilhaão: readonly (EXPR_1, ..., EXPR_N)
     Imprime EXPR_1, ..., EXPR_N, então lê uma expressão do console e retorna a expressão (sem avaliacedilhaão). A expressão é terminada com um ; (ponto e vírgula) ou $ (sinal de dólar).

          (%i1) aa: 7$
          (%i2) foo: readonly ("Fornecedilhaa uma expressão:");
          Enter an expressão:
          2^aa;
                                            aa
          (%o2)                            2
          (%i3) foo: read ("Fornecedilhaa uma expressão:");
          Enter an expressão:
          2^aa;
          (%o3)                            128

     Veja também read.

 -- Funcedilhaão: reveal (EXPR, DEPTH)
     Substitue partes de EXPR no inteiro especificado DEPTH com sumário descritivo.

       * Somas e diferencedilhaas são substituídas por sum(N) onde N é o número de operandos do produto.

       * Produtos são substituídos por product(N) onde N é o número de operandos da multiplicacedilhaão.

       * Exponenciais são substituídos por expt.

       * Quocientes são substituídos por quotient.

       * Negacedilhaão unária é substituída por negterm.

     Quando DEPTH é maior que ou igual à máxima intensidade de EXPR, reveal (EXPR, DEPTH) retornam EXPR sem modificacedilhaões.

     reveal avalia seus argumentos. reveal retorna expressão sumarizada.

     Exemplo:

          (%i1) e: expand ((a - b)^2)/expand ((exp(a) + exp(b))^2);
                                    2            2
                                   b  - 2 a b + a
          (%o1)               -------------------------
                                  b + a     2 b     2 a
                              2 %e      + %e    + %e
          (%i2) reveal (e, 1);
          (%o2)                       quotient
          (%i3) reveal (e, 2);
                                       sum(3)
          (%o3)                        ------
                                       sum(3)
          (%i4) reveal (e, 3);
                               expt + negterm + expt
          (%o4)               ------------------------
                              product(2) + expt + expt
          (%i5) reveal (e, 4);
                                 2                 2
                                b  - product(3) + a
          (%o5)         ------------------------------------
                                   product(2)     product(2)
                        2 expt + %e           + %e
          (%i6) reveal (e, 5);
                                   2            2
                                  b  - 2 a b + a
          (%o6)              --------------------------
                                 sum(2)     2 b     2 a
                             2 %e       + %e    + %e
          (%i7) reveal (e, 6);
                                    2            2
                                   b  - 2 a b + a
          (%o7)               -------------------------
                                  b + a     2 b     2 a
                              2 %e      + %e    + %e

 -- Variável de opcedilhaão: rmxchar
     Valor padrão: ]

     rmxchar é the caractere desenhado lado direito de uma matriz.

     Veja também lmxchar.

 -- Funcedilhaão: save (NOMEARQUIVO, NOME_1, NOME_2, NOME_3, ...)
 -- Funcedilhaão: save (NOMEARQUIVO, values, functions, labels, ...)
 -- Funcedilhaão: save (NOMEARQUIVO, [M, N])
 -- Funcedilhaão: save (NOMEARQUIVO, NOME_1=EXPR_1, ...)
 -- Funcedilhaão: save (NOMEARQUIVO, all)
 -- Funcedilhaão: save (NOMEARQUIVO, NOME_1=EXPR_1, NOME_2=EXPR_2, ...)

     Armazena os valores correntes de NOME_1, NOME_2, NOME_3, ..., em NOMEARQUIVO. Os argumentos são os nomes das variáveis, funcedilhaões, ou outros objetos. Se um nome não possui valore ou funcedilhaão associada a ele, esse nome sem nenhum valor ou funcedilhaão associado será ignorado. save retorna NOMEARQUIVO.

     save armazena dados na forma de expressões Lisp. Os dados armazenados por save podem ser recuperados por load (NOMEARQUIVO).

     O sinalizador global file_output_append governa se save anexa ao final ou trunca o arquivo de saída. Quando file_output_append for true, save anexa ao final doarquivo de saída. De outra forma, save trunca o arquivo de saída. Nesse caso, save cria o arquivo se ele não existir ainda.

     A forma especial save (NOMEARQUIVO, values, functions, labels, ...) armazena os ítens nomeados por values, funcedilhaões, labels, etc. Os nomes podem ser quaisquer especificados pela variável infolists. values compreende todas as variáveis definidas pelo usuário.

     A forma especial save (NOMEARQUIVO, [M, N]) armazena os valores de rótulos de entrada e saída de M até N. Note que M e N devem obrigatóriamente ser inteiros literais. Rótulos de entrada e saída podem também ser armazenados um a um, e.g., save ("foo.1", %i42, %o42). save (NOMEARQUIVO, labels) armazena todos os rótulos de entrada e saída. Quando rótulos armazenados são recuperados, eles substituem rótulos existentes.

     A forma especial save (NOMEARQUIVO, NOME_1=EXPR_1, NOME_2=EXPR_2, ...) armazena os valores de EXPR_1, EXPR_2, ..., com nomes NOME_1, NOME_2, .... Isso é útil para aplicar essa forma para rótulos de entrada e saída, e.g., save ("foo.1", aa=%o88). O lado direito dessa igualdade nessa forma pode ser qualquer expressão, que é avaliada. Essa forma não introduz os novos nomes no ambiente corrente do Maxima, mas somente armazena-os em NOMEARQUIVO.

     Essa forma especial e a forma geral de save podem ser misturados. Por exemplo, save (NOMEARQUIVO, aa, bb, cc=42, funcedilhaões, [11, 17]).

     A forma especial save (NOMEARQUIVO, all) armazena o estado corrente do Maxima. Isso inclui todas as variáveis definidas pelo usuário, funcedilhaões, arrays, etc., bem como alguns ítens definidos automaticamente. Os ítes salvos incluem variáveis de sistema, tais como file_search_maxima ou showtime, se a elas tiverem sido atribuídos novos valores pelo usuário; veja myoptions.

     save avalia NOMEARQUIVO e não avalia todos os outros argumentos.

 -- Variável de opcedilhaão: savedef
     Valor padrão: true

     Quando savedef é true, a vesão Maxima de uma funcedilhaão de usuário é preservada quando a funcedilhaão é traduzida. Isso permite que a definicedilhaão seja mostrada por dispfun e autoriza a funcedilhaão a ser editada.

     Quando savedef é false, os nomes de funcedilhaões traduzidas são removidos da lista de funcedilhaões.

 -- Funcedilhaão: show (EXPR)
     Mostra expr com os objetos indexados tendo índices covariantes como subscritos, índices contravariantes como sobrescritos.  Os índices derivativos são mostrados como subscritos, separados dos índices covariantes por uma vírgula.

 -- Funcedilhaão: showratvars (EXPR)
     Retorna uma lista de variáveis expressão racional canônica (CRE) na expressão expr.

     Veja também ratvars.

 -- Variável de opcedilhaão: stardisp
     Valor padrão: false

     Quando stardisp é true, multiplicacedilhaão é mostrada com um asterisco * entre os operandos.

 -- Funcedilhaão: string (EXPR)
     Converte expr para a notacedilhaão linear do Maxima apenas como se tivesse sido digitada.

     O valor de retorno de string é uma seqüência de caracteres, e dessa forma não pode ser usada em um cálculo.

 -- Variãvel de opcedilhaão: stringdisp
     Valor padrão: false

     Quando stringdisp for true, seqüências de caracteres serão mostradas contidas em aspas duplas. De outra forma, aspas não são mostradas.

     stringdisp é sempre true quando mostrando na tela uma definicedilhaão de funcedilhaão.

     Exemplos:

          (%i1) stringdisp: false$
          (%i2) "This is an example string.";
          (%o2)              This is an example string.
          (%i3) foo () := print ("This is a string in a function definition.");
          (%o3) foo() :=
                        print("This is a string in a function definition.")
          (%i4) stringdisp: true$
          (%i5) "This is an example string.";
          (%o5)             "This is an example string."

 -- Funcedilhaão: stringout (NOMEARQUIVO, EXPR_1, EXPR_2, EXPR_3, ...)
 -- Funcedilhaão: stringout (NOMEARQUIVO, [M, N])
 -- Funcedilhaão: stringout (NOMEARQUIVO, input)
 -- Funcedilhaão: stringout (NOMEARQUIVO, functions)
 -- Funcedilhaão: stringout (NOMEARQUIVO, values)

     stringout escreve expressões para um arquivo na mesma forma de expressões que foram digitadas para entrada.  O arquivo pode então ser usado como entrada para comandos batch ou demo, e isso pode ser editado para qualquer propósito.  stringout pode ser executado enquanto writefile está em progresso.

     O sinalizador global file_output_append governa se stringout anexa ao final ou trunca o arquivo de saída. Quando file_output_append for true, stringout anexa ao final do arquivo de sad́a. De outra forma, stringout trunca o arquivo de saída. Nesse caso, stringout cria o arquivo de saída se ele não existir ainda.

     A forma geral de stringout escreve os valores de um ou mais expressões para o arquivo de saída.  Note que se uma expressão é uma variável, somente o valor da variável é escrito e não o nome da variável.  Como um útil caso especial, as expressões podem ser rótulos de entrada (%i1, %i2, %i3, ...) ou rótulos de saída (%o1, %o2, %o3, ...).

     Se grind é true, stringout formata a saída usando o formato grind.  De outra forma o formato string é usado.  Veja grind e string.

     A forma especial stringout (NOMEARQUIVO, [M, N]) escreve os valores dos rótulos de entrada de m até n, inclusive.

     A forma especial stringout (NOMEARQUIVO, input) escreve todos os rótulos de entrada para o arquivo.

     A forma especial stringout (NOMEARQUIVO, functions) escreve todas as funcedilhaões definidas pelo usuário (nomeadas pela lista global functions) para o arquivo.

     A forma especial stringout (NOMEARQUIVO, values) escreve todas as variáveis atribuídas pelo usuário (nomeadas pela lista global values) para o arquivo.  Cada variável é impressa como uma declaracedilhaão de atribuicedilhaão, com o nome da variável seguida de dois pontos, e seu valor.  Note que a forma geral de stringout não imprime variáveis como declaracedilhaões de atribuicedilhaão.

 -- Funcedilhaão: tex (EXPR)
 -- Funcedilhaão: tex (RÓTULO)
 -- Funcedilhaão: tex (EXPR, MOMEARQUIVO)
 -- Funcedilhaão: tex (LABEL, NOMEARQUIVO)

     Imprime uma representacedilhaão de uma expressão adequada para o sistema TeX  de preparacedilhaão de documento. O resultado é um fragmento de um documento, que pode ser copiado dentro de um documento maior Esse fragmento não pode ser processado de forma direta e isolada.

     tex (EXPR) imprime uma representacedilhaão TeX da EXPR no console.

     tex (RÓTULO) imprime uma representacedilhaão TeX de uma expressão chamada RÓTULO e atribui a essa um rótulo de equacedilhaão (a ser mostrado à esquerda da expressão). O rótulo de equacedilhaão TeX é o mesmo que o rótulo da equacedilhaão no Maxima.

     tex (EXPR, NOMEARQUIVO) anexa ao final uma representacedilhaão TeX de EXPR no arquivo NOMEARQUIVO.

     tex (RÓTULO, NOMEARQUIVO) anexa ao final uma representacedilhaão TeX da expressão chamada de RÓTULO, com um rótulo de equacedilhaão, ao arquivo NOMEARQUIVO.

     tex avalia seu primeiro argumento após testar esse argumento para ver se é um rótulo. duplo apóstrofo '' forcedilhaa a avaliacedilhaão do argumento, desse modo frustrando o teste e prevenindo o rótulo.

     Veja também texput.

     Exemplos:

          (%i1) integrate (1/(1+x^3), x);
                                              2 x - 1
                            2            atan(-------)
                       log(x  - x + 1)        sqrt(3)    log(x + 1)
          (%o1)      - --------------- + ------------- + ----------
                              6             sqrt(3)          3
          (%i2) tex (%o1);
          $$-{{\log \left(x^2-x+1\right)}\over{6}}+{{\arctan \left({{2\,x-1
           }\over{\sqrt{3}}}\right)}\over{\sqrt{3}}}+{{\log \left(x+1\right)
           }\over{3}}\leqno{\tt (\%o1)}$$
          (%o2)                          (\%o1)
          (%i3) tex (integrate (sin(x), x));
          $$-\cos x$$
          (%o3)                           false
          (%i4) tex (%o1, "foo.tex");
          (%o4)                          (\%o1)

 -- Funcedilhaão: texput (A, S)
 -- Funcedilhaão: texput (A, S, OPERATOR_TYPE)
 -- Funcedilhaão: texput (A, [S_1, S_2], matchfix)
 -- Funcedilhaão: texput (A, [S_1, S_2, S_3], matchfix)

     Atribui a saída TeX para o átomo A, que pode ser um símbolo ou o nome de um operador.

     texput (A, S) faz com que a funcedilhaão tex interpole a seqüência de caracteres S dentro da saída TeX em lugar de A.

     texput (A, S, OPERATOR_TYPE), onde OPERATOR_TYPE é prefix, infix, postfix, nary, ou nofix, faz com que a funcedilhaão tex interpole S dentro da saída TeX em lugar de A, e coloca o texto interpolado na posicedilhaão apropriada.

     texput (A, [S_1, S_2], matchfix) faz com que a funcedilhaão tex interpole S_1 e S_2 dentro da saída TeX sobre qualquer lado dos argumentos de A. Os argumentos (se mais de um) são separados por vírgulas.

     texput (A, [S_1, S_2, S_3], matchfix) faz com que a funcedilhaão tex interpole S_1 e S_2 dentro da saída TeX sobre qualquer lado dos argumentos de A, com S_3 separando os argumentos.

     Exemplos:

     Atribui saída TeX a uma variável.

          (%i1) texput (me,"\\mu_e");
          (%o1)                         \mu_e
          (%i2) tex (me);
          $$\mu_e$$
          (%o2)                         false

     Atribui saída TeX a uma funcedilhaão comum (não a um operador).

          (%i1) texput (lcm, "\\mathrm{lcm}");
          (%o1)                     \mathrm{lcm}
          (%i2) tex (lcm (a, b));
          $$\mathrm{lcm}\left(a , b\right)$$
          (%o2)                         false

     Atribui saída TeX a um operador prefixado.

          (%i1) prefix ("grad");
          (%o1)                         grad
          (%i2) texput ("grad", " \\nabla ", prefix);
          (%o2)                        \nabla
          (%i3) tex (grad f);
          $$ \nabla f$$
          (%o3)                         false

     Atribui saída TeX a um operador infixado.

          (%i1) infix ("~");
          (%o1)                           ~
          (%i2) texput ("~", " \\times ", infix);
          (%o2)                        \times
          (%i3) tex (a ~ b);
          $$a \times b$$
          (%o3)                         false

     Atribui saída TeX a um operadro pósfixado.

          (%i1) postfix ("##");
          (%o1)                          ##
          (%i2) texput ("##", "!!", postfix);
          (%o2)                          !!
          (%i3) tex (x ##);
          $$x!!$$
          (%o3)                         false

     Atribui saída TeX a um operador n-ário.

          (%i1) nary ("@@");
          (%o1)                          @@
          (%i2) texput ("@@", " \\circ ", nary);
          (%o2)                         \circ
          (%i3) tex (a @@ b @@ c @@ d);
          $$a \circ b \circ c \circ d$$
          (%o3)                         false

     Atribui saída TeX a um operador nofix.

          (%i1) nofix ("foo");
          (%o1)                          foo
          (%i2) texput ("foo", "\\mathsc{foo}", nofix);
          (%o2)                     \mathsc{foo}
          (%i3) tex (foo);
          $$\mathsc{foo}$$
          (%o3)                         false

     Atribui saída TeX a um operadro matchfix.

          (%i1) matchfix ("<<", ">>");
          (%o1)                          <<
          (%i2) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
          (%o2)                [ \langle ,  \rangle ]
          (%i3) tex (<<a>>);
          $$ \langle a \rangle $$
          (%o3)                         false
          (%i4) tex (<<a, b>>);
          $$ \langle a , b \rangle $$
          (%o4)                         false
          (%i5) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"], matchfix);
          (%o5)           [ \langle ,  \rangle ,  \, | \,]
          (%i6) tex (<<a>>);
          $$ \langle a \rangle $$
          (%o6)                         false
          (%i7) tex (<<a, b>>);
          $$ \langle a \, | \,b \rangle $$
          (%o7)                         false

 -- Funcedilhaão: system (COMANDO)
     Executa COMANDO como um processo separado. O comando é passado ao shell padraõ para execucedilhaão. system não é suportado por todos os sistemas operacionais, mas geralmente existe em ambientes Unix e Unix-like.

     Supondo que _hist.out é uma lista de freqüência que você deseja imprimir como um gráfico em barras usando xgraph.

          (%i1) (with_stdout("_hist.out",
                     for i:1 thru length(hist) do (
                       print(i,hist[i]))),
                 system("xgraph -bar -brw .7 -nl < _hist.out"));

     Com o objetivo de fazer com que a impressão do gráfico seja concluída em segundo plano (retornando o controle para o Maxima) e remover o arquivo temporário após isso ter sido concluído facedilhaa:

          system("(xgraph -bar -brw .7 -nl < _hist.out;  rm -f _hist.out)&")

 -- Variável de opcedilhaão: ttyoff
     Valor padrão: false

     Quando ttyoff é true, expressões de saída não são mostradas. Expressões de saída são ainda calculadas e atribuídas rótulos.  Veja labels.

     Textos impresso por funcedilhaões internas do Maxima, tais como mensagens de erro e a saída de describe, não são afetadas por ttyoff.

 -- Funcedilhaão: with_stdout (NOMEARQUIVO, EXPR_1, EXPR_2, EXPR_3, ...)
     Abre NOMEARQUIVO e então avalia EXPR_1, EXPR_2, EXPR_3, .... Os valores dos argumentos não são armazenados em NOMEARQUIVO, mas qualquer saída impressa gerada pela avaliacedilhaão dos argumentos (de print, display, disp, ou grind, por exemplo) vai para NOMEARQUIVO em lugar do console.

     O sinalizador global file_output_append governa se with_stdout anexa ao final ou trunca o arquivo de saída. Quando file_output_append for true, with_stdout anexa ao final do arquivo de saída. De outra forma, with_stdout trunca o arquivo de saída. Nesse caso, with_stdout cria o arquivo se ele não existir ainda.

     with_stdout retorna o valor do seu argumento final.

     Veja também writefile.

          (%i1) with_stdout ("tmp.out", for i:5 thru 10 do print (i, "! yields", i!))$
          (%i2) printfile ("tmp.out")$
          5 ! yields 120
          6 ! yields 720
          7 ! yields 5040
          8 ! yields 40320
          9 ! yields 362880
          10 ! yields 3628800

 -- Funcedilhaão: writefile (NOMEARQUIVO)
     Comecedilhaa escrevendo uma transcricedilhaão da sessão Maxima para NOMEARQUIVO. Toda interacedilhaão entre o usuário e Maxima é então gravada nesse arquivo, da mesma forma que aparece no console.

     Como a transcricedilhaão é impressa no formato de saída do console, isso não pode ser reaproveitado pelo Maxima. Para fazer um arquivo contendo expressões que podem ser reaproveitadas, veja save e stringout. save armazena expressões no formato Lisp, enquanto stringout armazena expressões no formato Maxima.

     O efeito de executar writefile quando NOMEARQUIVO ainda existe depende da implementacedilhaão Lisp subjacente; o arquivo transcrito pode ser substituído, ou o arquivo pode receber um anexo. appendfile sempre anexa para o arquivo transcrito.

     Isso pode ser conveniente para executar playback após writefile para salvar a visualizacedilhaão de interacedilhaões prévias. Como playback mostra somente as variáveis de entrada e saída (%i1, %o1, etc.), qualquer saída gerada por uma declaracedilhaão de impressão em uma funcedilhaão (como oposicedilhaão a um valor de retorno) não é mostrada por playback.

     closefile fecha o arquivo transcrito aberto por writefile ou appendfile.