@c English version 2013-08-03
@menu
* Introducción a la miscelánea de opciones::  
* Share::  
* Funciones y variables para la miscelánea de opciones::
@end menu

@node Introducción a la miscelánea de opciones, Share, Miscelánea de opciones, Miscelánea de opciones

@section Introducción a la miscelánea de opciones

En esta sección se comentan varias opciones que tienen un efecto global sobre le comportamiento
de Maxima. También se comentan varias listas, como la de las funciones definidas por el usuario.









@node Share, Funciones y variables para la miscelánea de opciones, Introducción a la miscelánea de opciones, Miscelánea de opciones

@section Share

El directorio "share" de Maxima contiene programas y ficheros de interés para
los usuarios de Maxima, pero no forman parte del núcleo de Maxima. Estos programas 
se cargan en memoria con llamadas a las funciones @code{load} o @code{setup_autoload}.

El código @code{:lisp *maxima-sharedir*} muestra la localización del directorio 
"share" dentro del sistema de ficheros del usuario.

El código @code{printfile ("share.usg")} muestra una lista actualizada de paquetes 
en "share". Los usuarios pueden encontrar más información accediendo directamente
a los contenidos del directorio "share".









@node Funciones y variables para la miscelánea de opciones,  , Share, Miscelánea de opciones
@section Funciones y variables para la miscelánea de opciones


@defvr {Variable del sistema} askexp
Cuando se invoca a @code{asksign}, la expresión que se va 
a analizar es precisamente @code{askexp}.

@end defvr



@defvr {Variable optativa} genindex
Valor por defecto: @code{i}

La variable @code{genindex} es el prefijo alfabético utilizado para generar la siguiente variable de sumación en caso de necesidad.

@end defvr



@defvr {Variable optativa} gensumnum
Valor por defecto: 0

La variable @code{gensumnum} es el sufijo numérico utilizado para generar la siguiente variable de sumación. Si vale  @code{false} entonces el índice consistirá solamente de  @code{genindex}, sin sufijo numérico.
@end defvr




@deffn  {Función} gensym ()
@deffnx {Función} gensym (@var{x})

@code{gensym()} crea y devuelve una nueva símbolo o
variable sin valor asignado.

El nombre del nuevo símbolo está formado por la
concatenación de un prefijo, cuyo valor por defecto es "g", y de
un sufijo, el cual es la representación decimal de un número que
coincide, por defecto, con el valor de un contador interno de Lisp.

En caso de suministrar el argumento @var{x}, siendo este una cadena,
se utilizará como prefijo en lugar de "g", lo cual tendrá efecto
sólo para esta llamada a @code{gensym}Â·

En caso de suministrar el argumento @var{x}, siendo este un número
entero, se utilizará como sufijo en lugar del contador interno de
Lisp, lo cual tendrá efecto sólo para esta llamada a @code{gensym}Â·

Si no se suministra el sufijo en forma explícita, y sólo
en este caso, el contador interno sufrirá un incremento después de
haber sido utilizado.

Ejemplos:

@c ===beg===
@c gensym();
@c gensym("new");
@c gensym(123);
@c ===end===
@example
(%i1) gensym();
(%o1)                         g887
(%i2) gensym("new");
(%o2)                        new888
(%i3) gensym(123);
(%o3)                         g123
@end example
@end deffn



@defvr {Variable opcional} packagefile
Valor por defecto: @code{false}

Los autores de paquetes que utilizan @code{save} o @code{translate}
para crear librerías para otros usuarios pueden hacer la asignación
@code{packagefile: true} para prevenir que se añada información a las listas
con información del sistema de Maxima, como @code{values} o @code{functions}.
@end defvr



@deffn {Función} remvalue (@var{nombre_1}, ..., @var{nombre_n})
@deffnx {Función} remvalue (all)

Elimina del sistema los valores de las variable de usuario @var{nombre_1}, ..., @var{nombre_n} (incluso las que tienen subíndices).

La llamada @code{remvalue (all)} elimina los valores de todas las variables en @code{values}, la lista de todas las variables a las que el usuario a dado algún nombre, pero no de aquéllas a las que Maxima asigna automáticamente un valor.

Véase también @code{values}.

@end deffn



@deffn {Función} rncombine (@var{expr})

Transforma @var{expr} combinando todos los términos de @var{expr} que tengan denominadores idénticos o que difieran unos de otros por factores numéricos. Su comportamiento es diferente al de la función @code{combine}, que combina términos con iguales denominadores.

Haciendo @code{pfeformat: true} y utilizando @code{combine} se consiguen resultados similares a aquéllos que se pueden obtener con  @code{rncombine}, pero @code{rncombine} realiza el paso adicional de multiplicar denominadores numéricos. Esto da como resultado expresiones en las que se pueden reconocer algunas cancelaciones.

Antes de utilizar esta función ejecútese @code{load("rncomb")}.
@end deffn





@deffn {Función} setup_autoload (@var{nombre_fichero}, @var{función_1}, ..., @var{función_n})

Especifica que si alguna de las funciones @var{function_1}, ..., @var{function_n} es referenciada pero todavía no ha sido definida, se cargará @var{nombre_fichero} mediante una llamada a @code{load}. El @var{nombre_fichero} normalmente contendrá las definiciones de las funciones especificadas, aunque esto no es imperativo.

La función @code{setup_autoload} no opera con arreglos de funciones.

La función @code{setup_autoload} no evalúa sus argumentos.

Ejemplo:

@example
(%i1) legendre_p (1, %pi);
(%o1)                  legendre_p(1, %pi)
(%i2) setup_autoload ("specfun.mac", legendre_p, ultraspherical);
(%o2)                         done
(%i3) ultraspherical (2, 1/2, %pi);
Warning - you are redefining the Macsyma function ultraspherical
Warning - you are redefining the Macsyma function legendre_p
                            2
                 3 (%pi - 1)
(%o3)            ------------ + 3 (%pi - 1) + 1
                      2
(%i4) legendre_p (1, %pi);
(%o4)                          %pi
(%i5) legendre_q (1, %pi);
                              %pi + 1
                      %pi log(-------)
                              1 - %pi
(%o5)                 ---------------- - 1
                             2
@end example

@end deffn



@deffn  {Función} tcl_output (@var{list}, @var{i0}, @var{skip})
@deffnx {Función} tcl_output (@var{list}, @var{i0})
@deffnx {Función} tcl_output ([@var{list_1}, @dots{}, @var{list_n}], @var{i})

Imprime los elementos de una lista encerrándolos con llaves @code{@{ @}},
de forma apropiada para ser utilizado en un programa en el lenguaje Tcl/Tk.

@code{tcl_output (@var{list}, @var{i0}, @var{skip})}
imprime @var{list}, empezando por el elemento @var{i0} siguiendo luego con los
elementos @code{@var{i0} + @var{skip}}, @code{@var{i0} + 2 @var{skip}}, etc.

@code{tcl_output (@var{list}, @var{i0})}
equivale a @code{tcl_output (@var{list}, @var{i0}, 2)}.

@code{tcl_output ([@var{list_1}, ..., @var{list_n}], @var{i})}
imprime los @var{i}-ésimos elementos de @var{list_1}, @dots{}, @var{list_n}.

Ejemplos:

@c EXAMPLE INPUT
@c tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$
@c tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$
@c tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$
@c tcl_output ([x1, y1, x2, y2, x3, y3], 2)$
@c tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$

@c EXAMPLE OUTPUT: CLISP
@c OUTPUT IS OK FOR FIRST TWO, BROKEN FOR OTHERS
@c GCL OUTPUT: SAME FOR FIRST TWO
@c GCL FAILS ON OTHERS (IN EACH CASE COMPLAINING ELEMENTS ARE "not of type (OR RATIONAL LISP:FLOAT)"
@example
(%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     
 @}
@end example
@end deffn


