wolfram usar programming online mathematica language introduccion español descargar como wolfram-mathematica

wolfram-mathematica - usar - wolfram mathematica online



Cómo obtener información sobre la selección de fuentes en Mathematica mediante programación (4)

Si evalúo, por ejemplo, SystemDialogInput["Color"] y selecciono un color, digamos rojo, la celda de salida muestra RGBColor[1,0,0] .

Para ver el panel de fuente puedo evaluar FrontEndTokenExecute["FontPanel"] . Si tengo algún texto resaltado en algún lugar, puedo cambiar el estilo de fuente del texto resaltado (o celda) desde el panel del sistema que aparece en FrontEndTokenExecute . Lo que me pregunto es si hay una manera de devolver programáticamente las configuraciones de fuente elegidas de manera análoga a cómo SystemDialogInput["Color"] devuelve el color elegido. Por ejemplo, evalúe algún código que incluya la elección de la configuración de fuente dentro del panel de fuentes del sistema, digamos, elija Arial 12pt en negrita manualmente en el panel de fuentes,

y volver por ejemplo

{FontFamily->"Arial",FontSize->12,FontWeight->Bold}

Solo para que quede claro, estoy hablando de hacer esto sin ningún texto o celda resaltados en el cuaderno. Uno de los problemas parece ser, al menos en una Mac, que la fuente solo se selecciona si se ha resaltado algo en el cuaderno. Hay algunos ejemplos como este en la documentación ( ref/CurrentValue ):

Style["xxxx", FontFamily :> CurrentValue["ControlsFontFamily"], FontSize :> CurrentValue["ControlsFontSize"]]

Esto sugiere que es posible una respuesta si existe el argumento apropiado para CurrentValue pero "ControlsFontFamily" y "PanelFontFamily" no son los argumentos correctos en este caso.

¿También es posible enumerar todas las fuentes disponibles mediante programación en una computadora en particular?

Editar

@kguler ha proporcionado una respuesta a la oración final y la segunda parte de mi pregunta, esto podría usarse para construir mi propio panel de fuentes. Ejecuté el código de @Heike y obtuve esto (captura de pantalla) en Mac OS X 10.6.8 con Mma 8.0.4. Tenga en cuenta la sombra de PropertyValue con ref/PropertyValue .


Creo que el ejemplo en Generalizations & Extentions en la página de ayuda de "FontChooser" en el centro de documentación hace lo que usted desea. El código para ese ejemplo es

Needs["GUIKit`"] GUIRunModal[ Widget["Panel", { Widget["FontChooser", { "showLogicalFonts" -> False, PropertyValue[{"chooser", "selectionModel"}, Name -> "fontSelectionModel"], BindEvent[{"fontSelectionModel", "change"}, Script[updateFont[]]] }, Name -> "chooser"], Widget["TextField", {"text" -> ""}, Name -> "myTextField"], Script[ fontExpr = {}; updateFont[] := Module[{newFont}, newFont = PropertyValue[{"fontSelectionModel", "selectedFont"}]; fontExpr = { FontFamily -> PropertyValue[{newFont, "family"}], FontSize -> PropertyValue[{newFont, "size"}], FontWeight -> If[PropertyValue[{newFont, "bold"}], "Bold", "Plain"], FontSlant -> If[PropertyValue[{newFont, "italic"}], "Italic", "Plain"] }; SetPropertyValue[{"myTextField", "text"}, ToString[fontExpr]]; ]; ], BindEvent["endModal", Script[ fontExpr]] }] ]


Encontré esto hace mucho tiempo en MathGroup (pero ahora no puedo encontrar el enlace exacto allí).

fontlist = FE`Evaluate[FEPrivate`GetPopupList["MenuListFonts"]] fontlist /. Rule[x_, y_] -> Style[x, 20, FontFamily -> y]

EDITAR: La fuente es John Fultz de Wolfram. Aquí está el enlace de MathGroup: V7 FrontEndTokens

EDITAR 2: En las ventanas, si no tiene una selección resaltada, el valor predeterminado parece ser donde se mueva el cursor después de que se FrontEndExecute[FrontEndToken["FontPanel"]] el comando FrontEndExecute[FrontEndToken["FontPanel"]] . Por defecto es la siguiente celda. La primera entrada de teclado que escribe después de que el retorno del cuadro de diálogo tiene el estilo de la selección de fuente que realiza en el cuadro de diálogo de fuente. Entonces, si ejecutas

SelectionMove[InputNotebook[], After, Notebook]; FrontEndExecute[FrontEndToken["FontPanel"]]

y comience a escribir su fuente de diálogo se aplicará la configuración. Sin embargo, cualquier movimiento del mouse antes de una entrada del teclado destruye la configuración de la fuente.

EDITAR 3: Usar la idea de Silvia sobre el uso de un cuaderno invisible, pero en su lugar, escribir en una celda nueva en el cuaderno actual también funciona. Pasos: mueva la selección a una nueva celda que esté cerrada, escriba algo, invoque el panel de fuentes, capture las opciones de fuentes de la celda, elimine la celda y devuelva las opciones de fuentes capturadas:

fontPanelReturn[] := {SelectionMove[EvaluationNotebook[], After, Notebook]; NotebookWrite[EvaluationNotebook[], Cell["text", ShowCellBracket -> False, CellOpen -> False, Magnification -> 0]]; SelectionMove[EvaluationNotebook[], Before, CellContents]; SelectionMove[EvaluationNotebook[], All, Word]; FrontEndExecute[FrontEndToken["FontPanel"]]; fontops = AbsoluteOptions[ NotebookSelection[EvaluationNotebook[]], {FontColor, FontFamily, FontProperties, FontSize, FontSlant, FontTracking, FontVariations, FontWeight, Background}]; NotebookDelete[EvaluationNotebook[]]; SelectionMove[EvaluationNotebook[], Next, Cell]; fontops}

Utilizando como

fontPanelReturn[]

da, (por ejemplo)

{{Background -> None, FontColor -> Automatic, FontFamily -> "Trebuchet MS", FontProperties -> {"FontMonospaced" -> Automatic, "FontSerifed" -> Automatic, "ScreenResolution" -> 72}, FontSize -> 24, FontSlant -> "Italic", FontTracking -> "Plain", FontVariations -> {"CapsType" -> Normal, "CompatibilityType" -> Normal, "Masked" -> False, "Outline" -> False, "RotationAngle" -> 0, "Shadow" -> False, "StrikeThrough" -> False, "Underline" -> False}, FontWeight -> "Bold"}}

EDIT 4: Obtendrá el mismo resultado si cambia el código de Silvia para que seleccione la celda antes de invocar el cuadro de diálogo del panel de fuentes y luego capture las opciones de fuentes de la celda (en lugar de las del cuaderno):

inputFontSettings[] := Module[{doc, opt}, doc = CreateDocument[TextCell["text"], WindowSelected -> False, Visible -> False]; SelectionMove[doc, Next, Cell]; FrontEndTokenExecute[doc, "FontPanel"]; opt = AbsoluteOptions[ NotebookSelection[doc], {FontColor, FontFamily, FontProperties, FontSize, FontSlant, FontTracking, FontVariations, FontWeight, Background}]; NotebookClose[doc]; opt]


Sobre la cuestión de listar todas las fuentes disponibles ...

Esperamos que alguien pueda participar pronto con una forma nativa de Mathematica para obtener una lista de todas las fuentes disponibles. Mientras esperamos, aquí hay una forma de usar Java:

Needs["JLink`"] LoadJavaClass["java.awt.GraphicsEnvironment"]; fontFamilies[] := JavaBlock @ java`awt`GraphicsEnvironment`getLocalGraphicsEnvironment[] @ getAvailableFontFamilyNames[]

La lista de Java puede no coincidir exactamente con la lista de Mathematica dadas las diferencias tecnológicas, pero es un comienzo decente.


Tal vez tu puedas:

configura un nb invisible y coloca una célula de texto de muestra en él;

-> luego seleccione la celda;

-> usando FrontEndTokenExecute["FontPanel"] para formatearlo;

-> extraer las opciones de fuente que necesita de la cellexpression;

-> pégalo donde quieras.

Aquí está cómo implementar esto:

inputFontSettings[] := Module[ {doc, opt}, doc = CreateDocument[TextCell["text"], WindowSelected -> False, Visible -> False]; SelectionMove[doc, All, Notebook]; FrontEndTokenExecute[doc, "FontPanel"]; opt = Options@NotebookRead[doc]; NotebookClose[doc]; opt ]

Tenga en cuenta que si usa el tamaño de fuente predeterminado, no se devolverá ningún elemento FontSize .