2010-12-20 10 views
13

मैं उस तालिका को मुद्रित करने की कोशिश कर रहा हूं जो शुद्ध पाठ प्रतिनिधित्व की तुलना में आंखों के लिए अधिक सुखद है। मूल रूप से मैं कुछ इस तरह परिवर्तित करना चाहते हैं:एएनएसआई बॉक्स वर्णों का उपयोग कर टर्मिनल में ड्राइंग टेबल

+-----+--------+ 
| age | weight | 
+-----+--------+ 
| 10 | 100 | 
| 80 | 500 | 
+-----+--------+ 

कुछ इस तरह हैं:

in terminal looks like this

नोटिस:

┌─────┬────────┐ 
| age | weight | 
├─────┼────────┤ 
│ 10 │ 100 │ 
│ 80 │ 500 │ 
└─────┴────────┘ 

यहाँ मैं क्या टर्मिनल में देखने के स्क्रीनशॉट है पंक्तियों के बीच अंतराल। मेरी समस्या यह है कि वे ठीक से कनेक्ट नहीं हो रहे हैं जबकि अन्य यूनिक्स उपकरण जो टर्मिनल में एएनएसआई प्रिंटिंग लुक का उपयोग करते हैं। उदाहरण के लिए, पेड़ के लिए, यदि मैं अपने टर्मिनल में tree -A चलाने `मैं इस मिल:

tree in terminal

नोटिस कैसे खड़ी लाइनों के साथ जुड़े हुए हैं। यह हास्यास्पद है क्योंकि जब मैं कॉपी और मेरे पाठ संपादक में पेड़ के उत्पादन में पेस्ट और मेरी स्क्रिप्ट चलाने मैं कुछ इस तरह प्राप्त होते हैं:

tree in my code

जाहिर है मैं टर्मिनल में एएनएसआई वर्ण मुद्रण और सका बारे में कुछ याद कर रहा हूँ ' इसे गुगल करके इसके बारे में कुछ भी नहीं मिला। क्या कोई इस विषय पर कुछ प्रकाश डाल सकता है?

उत्तर

18

मुझे लगता है कि मुझे अपने प्रश्न का उत्तर देना चाहिए। थोड़ा सा शोध और दोस्त और मालिक, लिनस की मदद के बाद, मैंने पाया कि मुझे पहले टर्मिनल मोड पर जाने के लिए टर्मिनल को मजबूर करने की आवश्यकता है, फिर विशेष वर्ण मुद्रित करें और फिर टेक्स्ट मोड पर वापस आएं। ग्राफिकल मोड में स्विच करने के लिए एएससीआई कोड 14 और 15 टेक्स्ट मोड पर वापस आ जाएगा। तो यहां रूबी में कोड है:

printf("%c\n", 14) 
printf("%c ", 0x6A) # ┘ 
printf("%c ", 0x6B) # ┐ 
printf("%c ", 0x6C) # ┌ 
printf("%c ", 0x6D) # └ 
printf("%c ", 0x6E) # ┼ 
printf("%c ", 0x71) # ─ 
printf("%c ", 0x74) # ├ 
printf("%c ", 0x75) # ┤ 
printf("%c ", 0x76) # ┴ 
printf("%c ", 0x77) # ┬ 
printf("%c\n", 0x78) # │ 


a = sprintf("%c", 0x6C) + # ┌ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c\n", 0x6B) + # ┐ 
sprintf("%c", 0x78) + # │ 
#print("  ") 
"  " + 
sprintf("%c\n", 0x78) + # │ 
sprintf("%c", 0x6D) + # └ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x71) + # ─ 
sprintf("%c", 0x6A) # ┘ 

puts a 

printf("%c\n", 15) 
3

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