2011-06-21 20 views
6

Kullanım Messages. Örneğin:Yerleşik işlevlerin satır içi biçimlendirmesini eklemenin uygun yolu, yerleşik işlevlerin yerleşik satır içi biçimlendirmesine sahip

In[1]:= ActionMenu::usage // FullForm 

Out[1]//FullForm= 
"\!\(\*RowBox[{\"ActionMenu\", \"[\", RowBox[{StyleBox[\"name\", \"TI\ 
\"], \",\", RowBox[{\"{\", \ 
RowBox[{RowBox[{SubscriptBox[StyleBox[\"lbl\", \"TI\"], \ 
StyleBox[\"1\", \"TR\"]], \":>\", SubscriptBox[StyleBox[\"act\", \"TI\ 
\"], StyleBox[\"1\", \"TR\"]]}], \",\", \ 
RowBox[{SubscriptBox[StyleBox[\"lbl\", \"TI\"], StyleBox[\"2\", \ 
\"TR\"]], \":>\", SubscriptBox[StyleBox[\"act\", \"TI\"], \ 
StyleBox[\"2\", \"TR\"]]}], \",\", StyleBox[\"\[Ellipsis]\", \ 
\"TR\"]}], \"}\"}]}], \"]\"}]\) represents an action menu with label \ 
\!\(\*StyleBox[\"name\", \"TI\"]\), and with items labeled \ 
\!\(\*SubscriptBox[StyleBox[\"lbl\", \"TI\"], StyleBox[\"i\", \ 
\"TI\"]]\), that evaluates the expression \ 
\!\(\*SubscriptBox[StyleBox[\"act\", \"TI\"], StyleBox[\"i\", \ 
\"TI\"]]\) if the corresponding item is chosen." 

biri bu hat biçimlendirme Core.nb stil bölümünde "Inline Biçimlendirme için Styles" tanımlanan stilleri kümesi dayandığını görebiliriz. Ancak, bu stiller için herhangi bir belgenin yanı sıra, usageMessage s'ye biçimlendirme eklemenin uygun algoritmasının herhangi bir açıklamasını bulamadım.

in-line Mathematicakullanıcı tanımlı usageMessage s biçimlendirme eklemek için uygun yol nedir? Core.nb stil sayfasında tanımlanan satır içi formatlama için varsayılan stillerin kullanım kuralları nelerdir? Ben vs. Workbench gibi

dip not ek bileşenleri yüklemeden, sadece Mathematica ile in-line benim paketinde usageMessage s biçimlendirme eklemek istiyorum String s'deki gömülü satır içi biçimlendirmenin sözdizimi, "String Representation of Boxes." Ders kitabında kısmen belgelenmiştir. Bu sözdizimi ile ilgili resmi haber grubunda ilgili soru: "(any documentation for) linear syntax?" FrontEnd'de bu dizelerin görüntülenmesi Cell seçeneğiyle denetlenir.

+0

http://www.mathematicahelp.info/minor-progress-with- 6-0-documentation –

+5

Bunu bir yanıt olarak göndermiyorum çünkü açıkça WorkBench'i göz ardı ettiniz. Ama sanırım bu palet gibi bir şey peşindesiniz http://reference.wolfram.com/workbench/index.jsp?topic=/com.wolfram.eclipse.help/html/reference/DocumentationTools/tutorial/AuthoringSymbolPagesUsingDocumentationTools.html –

cevap

1

Dizeleri işlemedeki sorunlardan biri, Mathematica'daki dizeleri çoğu işlemin otomatik olarak ters eğenin yerini almasıdır. (\) kaçan ters eğik çizgi ile (\\).

Eğer denerseniz bu:

enter image description here

Eğer (bu bir deyim yapmak eksi \!) aradığınız dize var, ama aslında öyle düşünebilir: "\\(x\\_\\(1, 2\\) \[Equal] \\(\\(-b\\) \[PlusMinus] \\@\\(b\\^2 -\\(4\\ a\\ c\\)\\)\\)\\/\\(2\\ a\\)\\)"

Çözümüm zarif olmaktan çok uzak ama işe yarıyor.

  1. senin biçimlendirilmiş ifadeden kutuları oluşturma: enter image description here
  2. çıkışını seçin ve menü Cell > Convert to > InputForm gidin. Sonuç: Artık etrafında önünde ve tırnak içinde \! koyarak, dize düzenleyebilir enter image description here
  3. : Harici bir düzenleyicide adım 3 gerçekleştirirseniz "\!\(x \_ \(1, 2\) == \(\(-b\) \[PlusMinus] \@\(b \^2 - \(4\ a\ c\)\)\) \/ \(2\ a\)\)"

, tırnak uzakta bırakın ve sadece var \! önde ve yapıştırılmış MMA sonuçta doğrudan biçimlendirilmiş ifadeye dönüştürülür

+0

+ 1. Box'lerden 'InputForm' lineer form olduğunu bilmiyordum. Ek gözlemler için cevabımı görün. –

1

Sanırım en kolay yol dize biçimlendirmek için yalnızca Ön Uç kullanmaktır. Bir paket yazıyorsanız, "paketleri otomatik kaydet" seçeneğini kullanabilirsiniz (yani, bir dizüstü bilgisayarın başlatma hücrelerinin içeriği paket haline geldiğinde). Paketi yazmak için bir metin düzenleyicisi kullanırsanız, biçimlendirme kullanmak için çok fazla sorun olabilir ...

1

Bu cevap Sjoerd'ın cevabının bir ekidir.

Her şeyden önce, doğrusal kutular elde etmek için FrontEnd komutunu Cell > Convert to > InputForm kullanmamız gerekmez. Biz sadece MakeBoxes çıkışına InputForm uygulayarak alabilirsiniz: İkinci

In[1]:= [email protected][Subscript[x, 1,2]==(-b\[PlusMinus]Sqrt[b^2-4 a c])/(2 a)] 
Out[1]//InputForm= 
\(x\_\(1, 2\) == \(\(-b\) \[PlusMinus] \@\(b\^2 - \(4\ a\ c\)\)\)\/\(2\ a\)\) 

, biz eşdeğer sonuçla aşağıdaki iki yoldan tarafından çerçevelerin son dizgi in-line dize temsilini aktarabilirsiniz (tek fark olmasıdır \!\(x\_\(1, 2\) == \(\(-b\) ± \@\(b\^2 - \(4\ a\ c\)\)\)\/\(2\ a\)\): biz bir satır içeren bir dosyayı almak Her iki durumda da

[email protected] 
    StringInsert[ 
    ToString[ 
    [email protected] 
    MakeBoxes[ 
     Subscript[x, 1, 2] == (-b \[PlusMinus] Sqrt[b^2 - 4 a c])/(
     2 a)], OutputForm], "\\!", 1] >> "C:\\input.txt" 

Export["C:\\input.txt", 
StringInsert[ 
    ToString[[email protected] 
    MakeBoxes[ 
    Subscript[x, 1, 2] == (-b \[PlusMinus] Sqrt[b^2 - 4 a c])/(2 a)], 
    OutputForm], "\\!", 1], "String"] 

: Put metni) sarar. Önyüzdeki Notebook'lar bu hattı takma

orijinal ifadeyi verir (kendiniz deneyin!):

screenshot

İlgili
+0

Times New Roman Italic ("TI") kullanarak bir harfi nasıl hızlı biçimlendireceğinizi biliyor musunuz? Yaptığım şey mektubu yazıp yazı tiplerine git ve değiştir. Fakat tam forma baktığımda, StyleBox [\ "L \", FontFamily -> \ "Times \", FontSize-> 11, FontWeight -> \ "Plain \", FontSlant -> \ "Italic \ "] yerine kısaltılmış sürümü' StyleBox [\ "L \", \ "TI \"] '. Ayrıca, burada açıklandığı gibi bir dizin oluşturmaya çalıştığımda da sorun yaşıyorum (http://www.dbaileyconsultancy.co.uk/m_documentation/m_documentation.html). – jmlopez

+1

@jmlopez Metninizi seçin, ardından Alt + 0 tuşlarına basın ve iletişim kutusuna '' TI ''yazın. Alternatif olarak, Biçim> Stil> Diğer ... menü öğesini kullanın. –

+0

teşekkürler, bu biçimlendirme işlemini basitleştirir. Orijinal örneğinize geri dönün: ActionMenu :: use'. Bir defterde '? ActionMenu''ya bakarsanız, biçimlendirilmiş bir mesaj görürsünüz. Şimdi, doc Center'da 'ActionMenu start: 1''i ararsanız, italik zamanların yeni rotası olmadan aynı mesajı görürsünüz. Bu, ActionMenu :: use' mesajıyla aynı değil mi? Bir fonksiyonun özetini 'functionName :: use' olarak ayarlayarak indeksimi oluşturmaya çalışıyorum ama her zaman' StyleBoxes' ile tüm mekanı bitiriyorum. Biçimlendirmeyi ActionMenu :: use işlevinden kaldırmanın bir yolu var mı? – jmlopez