दशमलव बिंदु पर संख्याओं के लंबवत स्तंभों को संरेखित करें


9

इस पोस्ट को मैंने Emacs में लिखा था । तालिकाओं को अच्छा बनाने के लिए, मैंने रिक्ति को समायोजित करने का निर्णय लिया ताकि दशमलव बड़े करीने से पंक्तिबद्ध हो। डेटाबेस से मूल प्रारूप कुछ इस तरह दिखता है:

emacs                11505 227          3.6       3.3         1.9         68.9          93.5        68         
vi                   1087  289          11.1      6.9         2.9         71.7          96.2        9          
wolfram-mathematica  2993  360          4         2.2         1.9         66.7          92.5        51         

यह बहुत करीब है, लेकिन मैं स्तंभों को सही ठहराना चाहता हूं और सभी अंक ऊपर पंक्तिबद्ध हैं। चौथे स्तंभ की तरह दिखना चाहिए:

 3.6
11.1
 4

मैंने संरेखित आदेशों के साथ खेला था और (वैकल्पिक) दशमलव बिंदु पर तालिका को स्वचालित रूप से संरेखित करने का तरीका नहीं मिल सका। किसी कारण से, ये निर्देश कुछ भी संरेखित करने में विफल हैं:

उपयोग करके दशमलव बिंदु के संबंध में आंकड़े भी पंक्तिबद्ध किए जा सकते हैं M-- M-x align

जवाबों:


8

सबसे पहले, आपको यह सुनिश्चित करने की आवश्यकता है कि बफर पाठ मोड में है :

M-x text-mode

एक बार पाठ मोड में, C-- M-x align(जो text-dollar-figureसंरेखण नियम को लागू करता है) पहले दशमलव को लंबवत रूप से संरेखित करेगा। लेकिन यह दूसरे दशमलव कॉलम को संरेखित करने में विफल रहता है। इसके अलावा यह उन संख्याओं को संरेखित करने में विफल रहता है जिनमें स्पष्ट दशमलव बिंदु नहीं होता है (जैसे कि वुल्फराम-गणितज्ञ का औसत स्कोर 4)। इसे ठीक करने के लिए, आप नियम का मान समायोजित करना चाहेंगे align-rules-list:

(text-dollar-figure
  (regexp . "\\$?\\(\\s-+[0-9]+\\)\\.?")
  (modes . align-text-modes)
  (repeat . t)
  (spacing . 2)
  (justify . t)
  (run-if lambda nil
      (eq '- current-prefix-arg)))

यह कुछ चीजें करता है:

  • Regexp अब एक वैकल्पिक अनुगामी अवधि के लिए अनुमति देता है।
  • दोहराव को चालू करके, संख्या के प्रत्येक उदाहरण को संरेखित किया जाता है।
  • मैंने पठनीयता के लिए केवल एक के बजाय 2 स्थान जोड़े।

परिणाम:

emacs                11505  227   3.6  3.3  1.9  68.9  93.5   68         
vi                    1087  289  11.1  6.9  2.9  71.7  96.2    9          
wolfram-mathematica   2993  360   4    2.2  1.9  66.7  92.5   51         

अधिक या कम समतुल्य विधि एक फ़ंक्शन को परिभाषित करने के लिए है जो कॉल करती है align-regexp:

(defun align-decimal (start end)
    "Align a table of numbers on (optional) decimal points."
    (interactive "r")
    (align-regexp start end "\\(\\s-*\\)\\$?\\(\\s-+[0-9]+\\)\\.?"
                  -2 0 t))

इस मामले में, मैंने groupsसही औचित्य को चालू करने के लिए एक नकारात्मक संख्या के पैरामीटर को सेट spacingकिया है और जितना संभव हो उतना मूल रिक्ति को संरक्षित करने के लिए।

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