2012-01-25 21 views
5

He estado trabajando en conseguir etiquetas numeradas célula-marco siguiendo el gran consejo en estas otras respuestas¿Cómo rellenar CellFrameLabels en Mathematica Notebook Styles?

Extending cell definition to CellFrameLabels definition

How to Autonumber Cell Tags in Mathematica Notebooks?

y estoy casi allí. Quería agregar números de sección a los estilos de sección en la hoja de estilos de colores creativos/pasteles. He creado un nuevo portátil (aquí hay una copia en mi cuadro de selección pública)

http://dl.dropbox.com/u/1997638/CellFrameMargins.nb

fueron al menú "Formato", optó por "hoja de estilo \ creativo \ PastelColor", entonces "Formato" "Editar hoja de estilo", " Elija un estilo: Sección ", luego haga clic en Creative \ Pastelcolor.nb en la parte superior del cuadro de diálogo de edición de hojas de estilo.

Eso abre otro editor de hojas de estilo, y voy al cuarto elemento hacia abajo "Estilos para celdas de título y sección", luego el segundo elemento en "Sección". Poner punto de mira del ratón allí y hacer clic, a continuación, seleccione el menú "Cell", tema "Mostrar Expresión", que revela la siguiente expresión:

Cell[StyleData["Section"], 
CellFrame->{{0, 0}, {1, 3}}, 
CellFrameColor->RGBColor[1., 0.819608, 0.658824], 
FontFamily->"Helvetica", 
FontSize->18, 
FontWeight->"Bold", 
FontColor->RGBColor[0.882353, 0.419608, 0.0784314], 
Background->RGBColor[1., 0.886275, 0.741176]] 

GRAN! Revela todos los detalles, o al menos eso pensé. En particular, el elemento CellFrame me da la información {{0, 0}, {1, 3}} que necesito para alinear mis etiquetas de marcos de celda con el estilo de sección. Ok, así que regresa al diálogo editor de steylsheet para mi portátil, y siguiendo las respuestas antes mencionadas, escribo

Cell[ 
StyleData["Section"], 
CellFrameLabelMargins -> 0, 
    CellFrameLabels-> { { 
    Cell[ 
    TextData[{ "§", CounterBox["Section"], ": " }], 
    "SectionLabel", 
    CellFrame -> {{0, 0}, {1, 3}}, 
    CellFrameMargins -> 4 
    ] (* left label *), 
    Inherited (* right label *) }, 
    {Inherited (* bottom label *), 
    Inherited (* top label *) } } ] 

La regla CellFrameMargins -> 4 encontré por ensayo y error es necesario para alinear la parte superior e inferior de la marco de celda con el resto del estilo de sección a la derecha. Me entristece informar que solo funciona. Hay lagunas entre el texto de las etiquetas CellFrameLabels y los marcos, y quiero completar esas lagunas. Es como si las fuentes de las etiquetas de marco de celda no se extendieran lo suficiente, aunque son exactamente las mismas que las fuentes en las celdas de sección. No puedo encontrar una manera de completar el fondo detrás de las etiquetas. Probé Background -> RGBColor[...], traté de poner en fuentes explict, intenté configurar las diapositivas CellFrameMargins, y las herramientas CellFrameLabelMargins, en muchas combinaciones, pero fue en vano.

Estoy perplejo y agradecería cualquier consejo.

Screenshot

Respuesta

4

Esto parece funcionar para el estilo en colores pastel. Lo que hace es poner la etiqueta dentro de un marco. Tuve que tocar un poco con el ImageMargins y el FrameMargins del FrameBox para alinear todo.

Cell[StyleData["Section"], 
CellFrameLabels->{{ 
    Cell[ 
    BoxData[ 
    FrameBox[ 
    TemplateBox[{"§", CounterBox["Section"], ": "}, 
     "Row", 
     DisplayFunction->(RowBox[{#, " ", #2}]&) 
    ], 
    ImageMargins->-1, 
    Background->RGBColor[1., 0.886275, 0.741176], 
    FrameStyle->RGBColor[1., 0.886275, 0.741176], 
    FrameMargins->2 
    ] 
    ], 
    "SectionLabel", CellFrame -> {{0, 0}, {1, 3}}, 
    CellFrameMargins->0 
    ], Inherited}, 
    {Inherited, Inherited}}, 
CellFrameLabelMargins->0 
] 

Captura de pantalla: screen shot

+1

muy agradable! También me da muchas cosas nuevas para jugar –