2011-09-13 9 views
8

मैं अपनी पुस्तक के लिए कॉन्स्टेंटिया फ़ॉन्ट (जो विंडोज 7 के साथ आया था) का उपयोग करता हूं और गणित में एक ही फ़ॉन्ट का उपयोग करके इस पुस्तक के लिए ग्राफिक्स तैयार करना चाहता हूं। समस्या यह है कि डिफ़ॉल्ट रूप से कॉन्स्टेंटिया oldstyle digits आउटपुट करता है। मुझे पता है, उदा। XeTeX में, यह नियंत्रित करना संभव है कि पुराने स्टाइल या सामान्य अंक आउटपुट के लिए उपयोग किए जाते हैं या नहीं।क्या मैथमैटिका में अंकों की शैली को नियंत्रित करना संभव है?

क्या मैथमैटिका में अंकों की शैली को नियंत्रित करना संभव है?

+0

"पुरानी शैली" से आपका क्या मतलब है? आप सिर्फ एक फ़ॉन्ट की तलाश क्यों नहीं करते जिसके लिए अंक आपके लिए अधिक आकर्षक हैं? – DavidC

+0

@ डेविड टेक्स्ट –

+0

@Sjoerd धन्यवाद में डाला गया लिंक देखें। इससे चीजों को स्पष्ट करने में मदद मिलती है। – DavidC

उत्तर

3

टिक के लिए, एक कामकाज है, लेकिन इसके लिए थोड़ा प्रोग्रामिंग की आवश्यकता है। सबसे पहले, एक सहायक कार्य है।

getDigits[n_Integer] := IntegerDigits[n] 
getDigits[0.] := {0} 
getDigits[n_Real] := 
With[{rd = RealDigits[n]}, 
    Join[Take[rd[[1]], rd[[2]]], {"."}, 
    Drop[rd[[1]], rd[[2]]] ] /. {".", z___} -> {0, ".", z} /. {a__, 
    0 ..} -> {a} /. {a__, Repeated[0, {4, 150}], q__} -> {a} /. 
    {b__, "."} -> {b}] 
Attributes[getDigits] = Listable 

getDigits[{14.3, 2, 274, 2345.67}] 
    {{1, 4, ".", 3}, {2}, {2, 7, 4}, {2, 3, 4, 5, ".", 6, 7}} 

फिर, इस तरह एक समारोह: enter image description here

यह तो एक FrameTicks या Ticks विकल्प में इस्तेमाल किया जा सकता है:

ConstantiaTicks[a_?VectorQ, opts : OptionsPattern[Style]] := 
[email protected]{a, 
    Style[#, FontFamily -> "Constantia", 
     Sequence @@ {opts}] & /@ (StringJoin /@ 
     Map[ToString[ 
     Style[Which[IntegerQ[#], 
      FromCharacterCode[# + 8320], # === ".", "."]]] &, 
    (getDigits[a]), {2}])} 

निम्नलिखित परिणाम अर्जित करता है। निस्संदेह इसका मतलब है कि गणित को अपने मूल्यों को स्वचालित रूप से कार्य करने की बजाय अपने टिकों को निर्दिष्ट करना। इसका मतलब यह भी है कि जब तक आप ConstantiaTicks पर कोई अन्य तर्क नहीं लेना चाहते हैं तो डिफ़ॉल्ट टिक लंबाई लेना।

9

मुझे लगता है कि यह मुश्किल है। कॉन्सटैंशिया मेथेमेटिका में सीधे प्रयोग करने योग्य है:

Style["", FontFamily -> "Constantia", FontSize -> 100] 

enter image description here

हालांकि, फ़ॉन्ट विशेष रूप से इस तरह से संतुलित किया जाना बनाया गया है। आप आकार और FontSize और का उपयोग कर पत्र की स्थिति tweak तो AdjustmentBox आप इस मिल:

shift = {0, 0, 0, -1, -1, -1, 0.0, -1, 0.0, -1} 0.5; 
s = 0.65; 
sizeScale = {1, 1, 1, s, s, s, s, s, s, s, s}; 
Row[Table[ 
    AdjustmentBox[ 
    Style[num, FontFamily -> "Constantia", 
    FontSize -> 100 sizeScale[[num + 1]]], 
    BoxBaselineShift -> shift[[num + 1]]], {num, 0, 
    9}] 
] // DisplayForm 

enter image description here

तुम देखो स्थानांतरित कर दिया और उनके आकलन के पत्र एक अलग शरीर के वजन की है। फ़ॉन्ट वजन समायोजित किया जा सकता है, लेकिन केवल बहुत मोटे तौर पर। आम तौर पर आपके पास केवल सादा और बोल्ड शैलियों होती है। तो आप इस रूप में के रूप में पास प्राप्त कर सकते हैं:

body = {Plain, Plain, Plain, Bold, Bold, Bold, Bold, Bold, Bold, Bold}; 
Row[Table[ 
    AdjustmentBox[ 
    Style[num, FontFamily -> "Constantia" , 
    FontWeight -> body[[num + 1]], 
    FontSize -> 100 sizeScale[[num + 1]]], 
    BoxBaselineShift -> shift[[num + 1]]], {num, 0, 
    9}]] // DisplayForm 

enter image description here

कुछ बेहतर, लेकिन अभी भी बदसूरत। मुझे लगता है कि काम करने के लिए पत्रों का एक नया नया डिजाइन जरूरी है। शायद सामान्य अक्षरों को फ़ॉन्ट टेबल में कहीं और पाया जा सकता है?


अद्यतन

मिले विकल्प संख्या निर्धारित किया है। वे फ़ॉन्ट तालिका में 8320 - 832 9 पदों पर हैं। आप उन्हें फ़ॉन्ट उपयोगिता का उपयोग करके स्विच करने में सक्षम होना चाहिए।

Style[FromCharacterCode[Range[8320, 8329]],FontFamily -> "Constantia", FontSize -> 100] 

enter image description here

+1

उत्तर के लिए धन्यवाद लेकिन, ज़ाहिर है, यह विधि धुरी के लिए काम नहीं करेगी क्योंकि वे हैं Plot, Plot3D, आदि जैसे कमांड द्वारा स्वचालित रूप से जेनरेट किया गया – Igor

+0

@ इगोर कृपया मेरा अपडेट देखें –

+0

धन्यवाद @Sjoerd C. de Vries! – Igor

2

मैं FontForge हड़पने चाहते हैं। नए संस्करण (मुझे याद है) में एक मैपिंग लागू करने और इसे फ़ॉन्ट में फ़्लैट करने के लिए एक गहरा छुपा मेनू विकल्प है, इसलिए आप lnum (ऊपरी केस संख्या) का चयन कर सकते हैं और आसानी से पुराने के लिए अस्तर के प्रतिस्थापन के साथ कॉन्स्टेंटिया के संस्करण को आउटपुट कर सकते हैं। गणित के बाहर, पहले से ही शैली अंक बना दिया। वैकल्पिक रूप से, थोड़ी कम हाई-टेक, फ़ॉन्ट-फोर्ज में आप केवल लो-केस वाले लोगों के शीर्ष पर अस्तर या टैब्यूलर अंकों में कॉपी और पेस्ट कर सकते हैं।

फ़ॉन्ट-फोर्ज सुंदर दिखता नहीं है, लेकिन इसे थोड़ा ढीला कर देता है, क्योंकि यह वास्तव में बहुत अच्छा है और आसपास के फ़ॉन्ट को ट्विक करने के लिए बेहद आसान है।

वैकल्पिक समाधान के रूप में, क्या आपने गणित में डेटा को एक फ्लैट फ़ाइल में निर्यात करने और TikZ के साथ अपने XeTeX में इसे मूल रूप से प्रस्तुत करने का विचार किया है? यही वह दृष्टिकोण है जिसका मैं आमतौर पर उपयोग करता हूं, और आउटपुट वास्तव में उत्कृष्ट है।

संबंधित मुद्दे