2012-01-25 18 views
5

pracuję na uzyskiwanie numerowane etykiety komórek ramka po wielkiej radę w tych innych odpowiedziJak wypełnić CellFrameLabels w stylach Notatnik Mathematica?

Extending cell definition to CellFrameLabels definition

How to Autonumber Cell Tags in Mathematica Notebooks?

i jestem prawie tam. Chciałem dodać numery sekcji do stylów przekroju w arkuszu stylów kolorów Kreacja/Pastel. I stworzył nowy notebook (tu jest kopia na moim Dropbox publicznej)

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

udał się do menu "Format", wybrał "stylesheet \ Kreatywne \ PastelColor", a następnie "Format" "Edycja stylów", " Wybierz styl: Section ", a następnie kliknij przycisk Creative \ Pastelcolor.nb w górnej części okna dialogowego edycji arkusza stylów.

Który otwiera inny edytor arkuszy stylów i przechodzę do czwartej pozycji w dół "Style dla tytułów i komórek sekcji", a następnie drugi element w "Sekcji". Postawić krzyżyk tam myszy i kliknąć, a następnie wybierz z menu „komórka”, „Pokaż wyrażenie” artykuł, który ujawnia następujące wyrażenie:

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]] 

świetnie! Ujawnia wszystkie szczegóły, a przynajmniej tak myślałem. W szczególności element CellFrame dostarcza mi informacji o numerze {{0, 0}, {1, 3}} potrzebnych do wyrównania etykiet mojej komórki z stylem przekroju. Ok, więc z powrotem do okna edytora steylsheet na moim notebooku, a po wyżej wymienione odpowiedzi, wpisuję

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 *) } } ] 

CellFrameMargins -> 4 przepis znalazłam metodą prób i błędów jest potrzebne do linii górnej i dolnej części Ramka komórki z resztą stylu Sekcja po prawej. Przykro mi donieść, że to prawie działa. Między tekstem CellFrameLabels a ramkami występują luki i chcę je wypełnić. Wygląda to tak, jakby czcionki w komórkach CellFrameLabels nie rozciągały się wystarczająco daleko, nawet jeśli są dokładnie takie same, jak czcionki w komórkach sekcji. Nie mogę znaleźć sposobu na wypełnienie tła za etykietami. Próbowałem Background -> RGBColor[...], próbowałem umieszczać czcionki ekscentryczne, próbowałem ustawić CellFrameMargins i CellFrameLabelMargins, w wielu kombinacjach, ale bez skutku.

Jestem zaskoczony i docenię każdą radę.

Screenshot

Odpowiedz

4

To wydaje się działać dla stylu pastelowych. To, co to robi, polega na umieszczeniu etykiety w ramce. Musiałem trochę skrzypić z ImageMargins i FrameMargins z FrameBox, aby wszystko wyrównać.

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 
] 

Zrzut ekranu: screen shot

+1

bardzo miłe! Daje mi też wiele nowych rzeczy do zabawy –