सादे पाठ में बक्से और तालिकाओं को कैसे आकर्षित करें


42

कई सादे पाठ दस्तावेज़ों में, बॉक्स ड्राइंग वर्णों का उपयोग इन बक्से को आंकड़े और तालिकाओं में खींचने के लिए किया जाता है। ऐसे उदाहरण ( RFC 5766 से ) नीचे दिखाए गए हैं। क्या परीक्षण (और त्रुटि विधि ) का उपयोग करने के अलावा इसे ( उदाहरण के लिए, एक यूनिक्स कमांड लाइन उपकरण) को खींचने का एक बेहतर तरीका है ?


RFC 5766 के उदाहरण :

       +----------------------------+---------------------+
       | TURN client to TURN server | TURN server to peer |
       +----------------------------+---------------------+
       |             UDP            |         UDP         |
       |             TCP            |         UDP         |
       |        TLS over TCP        |         UDP         |
       +----------------------------+---------------------+

और यह एक, RFC 5766 से भी :

                                        Peer A
                                        Server-Reflexive    +---------+
                                        Transport Address   |         |
                                        192.0.2.150:32102   |         |
                                            |              /|         |
                          TURN              |            / ^|  Peer A |
    Client's              Server            |           /  ||         |
    Host Transport        Transport         |         //   ||         |
    Address               Address           |       //     |+---------+
   10.1.1.2:49721       192.0.2.15:3478     |+-+  //     Peer A
            |               |               ||N| /       Host Transport
            |   +-+         |               ||A|/        Address
            |   | |         |               v|T|     192.168.100.2:49582
            |   | |         |               /+-+
 +---------+|   | |         |+---------+   /              +---------+
 |         ||   |N|         ||         | //               |         |
 | TURN    |v   | |         v| TURN    |/                 |         |
 | Client  |----|A|----------| Server  |------------------|  Peer B |
 |         |    | |^         |         |^                ^|         |
 |         |    |T||         |         ||                ||         |
 +---------+    | ||         +---------+|                |+---------+
                | ||                    |                |
                | ||                    |                |
                +-+|                    |                |
                   |                    |                |
                   |                    |                |
             Client's                   |            Peer B
             Server-Reflexive    Relayed             Transport
             Transport Address   Transport Address   Address
             192.0.2.1:7000      192.0.2.15:50000     192.0.2.210:49191

                                 Figure 1

2
हालांकि यह पहले से ही बहुत सारे उत्तर हैं, मुझे लगता है कि यह शायद सॉफ्टवेअरसेक्स्टेक्सएक्सचेंज
डॉट कॉम


तालिकाओं के लिए, आप सीएसवी से मार्कडाउन टेबल तक जाने के लिए पंडोक-प्लेसेटेबल जैसी किसी चीज़ का उपयोग कर सकते हैं ... (या सिर्फ सादा पैंडॉक यदि आपका इनपुट html या
डॉक्स है

जवाबों:


47

नि: शुल्क ASCIIflow वेबसाइट आपको टेक्स्ट बॉक्स, टेक्स्ट, लाइन्स, एरो, फ़्रीफ़ॉर्म लाइन्स, इरेज़, इम्पोर्ट, एक्सपोर्ट और यहां तक ​​कि पूर्ववत करें / फिर से आकर्षित करने देगी । किसी और को क्या चाहिए होगा?

यहाँ इस उपकरण का उपयोग करके मेरी अद्भुत रचना है:

+-------------------------------+
|                               |
|  My first ASCII box           |
|                               |
+---------+---------------------+
          |
          |
          |
          | My first ever ASCII arrow
          |
          |
          |
+---------v----------------------+
|                                |
|  My second ASCII box           |
+--------------------------------+

उस वेबसाइट का एक नुकसान क्लिपबोर्ड हैंडलिंग है। आप सीधे कॉपी / पेस्ट नहीं कर सकते। आपको इसे दाईं ओर बटन के माध्यम से करना होगा।
इस्माइल मिगुएल

5
इसके अलावा 'डाउनलोड' बटन आयात बटन निकला। और 'अपलोड' बटन निर्यात बटन हो गया। शायद यह मैं हूं, लेकिन यह वास्तव में भ्रमित था।
मिक्सक्सीफॉइड

1
@Mixxiphoid नहीं, यह सिर्फ आप नहीं है। और हाँ, यह वास्तव में भ्रामक है, लेकिन काम करता है!
इस्माइल मिगुएल

17

ऐसे चित्रों को खींचना संभव है, जो 30 साल के डेटिंग टूल का उपयोग कर रहे हैं, अर्थात् तस्वीर जो troffकमांड सूट का हिस्सा है । इन दिनों gnu के groffपैकेज में picकमांड होगी । लिंक कुछ विशिष्ट पोस्टस्क्रिप्ट आउटपुट की एक तस्वीर दिखाता है, लेकिन nroffउपयुक्त विकल्पों का उपयोग करके या आपको एक एएससीआई-आर्ट संस्करण मिलेगा। उदाहरण के लिए 1991 से उपयोगकर्ता पुस्तिका (पीडीएफ) देखें ।

आपके उदाहरण में तालिकाओं को संभवतः इसी कमांड सूट द्वारा निर्मित किया जाता है, केवल tblसाधारण सूचियों से तालिकाओं का निर्माण करने के लिए।

एक gui संस्करण के लिए, आप artist-modeमाउस या कीबोर्ड का उपयोग करके बक्से और तीर वाली रेखाओं आदि को खींचने के लिए emacs में उपयोग कर सकते हैं । यूट्यूब वीडियो डेमो देखें ।


picग्रेविज़ के समान नहीं है dot?
hjpotter92

हाँ। graphviz तस्वीर प्रारूप में उत्पादन कर सकते हैं। मुझे लगता है कि वे दोनों एक ही एटी एंड टी यूनिक्स पृष्ठभूमि से हैं, ग्राफविज़ के पास एक विशेष उद्देश्य एप्लिकेशन है जिसे आगे विकास मिला है, जबकि तस्वीर ने गुइ-स्टाइल टूल्स को रास्ता दिया है।
मयूह

10

पात्रों के साथ बक्से या अन्य आकृतियों को ASCII कला (ANSI या ISO कला) के रूप में जाना जाता है । वहाँ ASCII आर्ट, इस तरह के ऑनलाइन के रूप में बनाने में सहायता करने के लिए कई उपकरण हैं ASCIIFlow , ASCII में छवि प्रतिपादन , जैसे अनुप्रयोगों figlet, आदि कुछ दिया है जावास्क्रिप्ट में कार्यान्वित किया है और किसी भी ऑपरेटिंग सिस्टम पर एक ब्राउज़र में चलाया जा सकता है।

सूर्य के नीचे कुछ भी नया नहीं है - माइक्रोग्राफी एक लंबी वंशावली के साथ सुलेख का एक सबसेट है, जिसका उपयोग सैकड़ों वर्षों से किया जाता है, चित्रों को बनाने के लिए अक्षरों का उपयोग करते हुए, जैसे कि नीचे कैलेंडर , अक्षरों से बनने वाली छवि के साथ।

ओमर कैलेंडर, सोथबी


8

मैं ASCII टेबल कैसे बना सकता हूं?

यदि आप सिर्फ ASCII टेबल (अपने पहले उदाहरण की तरह) ड्रा करना चाहते हैं, तो प्लेन टेक्स्ट टेबल्स जनरेटर - टेबल्सगेंटर डॉट कॉम को वेब उपयोगिता के लिए देखें जो आपको अच्छा डेटा टेबल बनाने में मदद करेगा:

यहाँ छवि विवरण दर्ज करें


3

GitHub से टर्मिनल-टेबल का उपयोग करते हुए कमांड लाइन से

स्थापित करें terminal-table:

gem install terminal-table

उदाहरण के लिए:

irb
require 'terminal-table'

rows = []
rows << ['UDP', 'UDP']
rows << ['TCP', 'UDP']
rows << ['TLS over TCP ', 'UDP']
table = Terminal::Table.new :headings => ['TURN client to TURN server', 'TURN server to peer'], :rows => rows

puts table

नमूना उत्पादन:

+----------------------------+---------------------+
| TURN client to TURN server | TURN server to peer |
+----------------------------+---------------------+
| UDP                        | UDP                 |
| TCP                        | UDP                 |
| TLS over TCP               | UDP                 |
+----------------------------+---------------------+

अजगर का उपयोग करके समान उत्पादन प्राप्त किया जा सकता है:

pip install terminaltables

उदाहरण के लिए:

from terminaltables import AsciiTable
table_data = [
    ['TURN client to TURN server', 'TURN server to peer'],
    ['UDP', 'UDP'],
    ['TCP', 'UDP'],
    ['TLS over TCP', 'UDP']
]
table = AsciiTable(table_data)
print table.table

1

मेरे पास यह है .vimrc:

vn<silent> <leader>[ :<c-u>cal<sid>rect(1)<cr>
vn<silent> <leader>] :<c-u>cal<sid>rect(2)<cr>
let s:h=split(' ╶╺╵└┕╹┖┗╴─╼┘┴┶┚┸┺╸╾━┙┵┷┛┹┻╷┌┍│├┝╿┞┡┐┬┮┤┼┾┦╀╄┑┭┯┥┽┿┩╃╇╻┎┏╽┟┢┃┠┣┒┰┲┧╁╆┨╂╊┓┱┳┪╅╈┫╉╋','\zs')
let s:e=map(range(81),'[v:val/27%3,v:val/9%3,v:val/3%3,v:val%3]') "base-3 encode
fu s:rect(x) "x:thickness
 if visualmode()!=#"\<c-v>"|retu|en
 let s=&sel|let&sel='inclusive'|let[ls,cs]=[[line("'<"),line("'>")],[virtcol("'<"),virtcol("'>")]]|let&sel=s
 let[l0,l1,c0,c1]=[min(ls),max(ls),min(cs),max(cs)]
 let a=map(map(getline(l0,l1),"split(v:val,'\\zs')"),"extend(v:val,repeat([' '],max([0,c1-len(v:val)])))")
 let x=a:x|let[V,H]=[[x,0,x,0],[0,x,0,x]] "vertical and horizontal line
 "b:list of changes as [line,column,bitmask]
 if l0<l1&&c0<c1|let b=[[l0,c0,[x,0,0,x]],[l0,c1,[x,x,0,0]],[l1,c0,[0,0,x,x]],[l1,c1,[0,x,x,0]]]
                 let b+=map(range(l0+1,l1-1),'[v:val,c0,V]')+map(range(l0+1,l1-1),'[v:val,c1,V]')
                 let b+=map(range(c0+1,c1-1),'[l0,v:val,H]')+map(range(c0+1,c1-1),'[l1,v:val,H]')
 elsei l0<l1    |let b=[[l0,c0,[x,0,0,0]],[l1,c0,[0,0,x,0]]]+map(range(l0+1,l1-1),'[v:val,c0,V]')
 elsei c0<c1    |let b=[[l0,c0,[0,0,0,x]],[l0,c1,[0,x,0,0]]]+map(range(c0+1,c1-1),'[l0,v:val,H]')
 el             |let b=[]|en
 for[l,c,m]in b
  let i=index(s:h,a[l-l0][c-1])
  if i>=0|let z=map(copy(s:e[i]),'max([v:val,m[v:key]])')|let a[l-l0][c-1]=s:h[27*z[0]+9*z[1]+3*z[2]+z[3]]|en
 endfo
 cal setline(l0,map(a,"join(v:val,'')"))
endf

ब्लॉक-विज़ुअल मोड ( <C-v>) में एक आयत का चयन करना और <leader>[अपनी सीमा पर लाइन-ड्राइंग वर्णों को दबाकर , उन्हें किसी भी पूर्व-मौजूदा लाइन-ड्राइंग वर्णों के साथ विलय करना। यदि आप +-|इसके बजाय शुद्ध ASCII पर जोर देते हैं , तो संशोधित करना आसान होना चाहिए।


0

सभी विम उपयोगकर्ताओं के लिए, दो आदरणीय पुराने प्लगइन्स उपलब्ध हैं:

  • इसे बनाओ! प्लगइन ; इसने वर्षों में कोई अपडेट नहीं देखा है, लेकिन इसका लेखक अभी भी सक्रिय है, इसलिए यह इसकी परिपक्वता के बारे में कुछ कहता है। यह बक्से और कनेक्टिंग लाइनों के लिए बहुत अच्छा है; बस यहाँ क्या माँगा जाता है। (यह भी हलकों और दीर्घवृत्त कर सकते हैं!)
  • स्केच.विम अचूक है, और अधिक माउस-चालित, पेंटिंग-शैली है

आप समानांतर में दोनों प्लगइन्स का उपयोग कर सकते हैं, बस एक ही समय में दोनों सक्रिय नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.