Org- মোড ইন্ডেন্টেশন কীভাবে কাস্টমাইজ করবেন?


12

এই প্রশ্নটি আসলে উত্থাপিত হয় কারণ আমি নন-মনসপাসেড ফন্টগুলি ব্যবহার করতে চাই ((সাবোন, মিনিয়ন, গারামন্ড ইত্যাদি)) org-indent-mode ব্যবহার করার সময় এই সমস্যার কারণ হয়, কারণ শিরোনামের অধীনে লেখাটি এখন শিরোনামগুলির সাথে একত্রিত হয় না। উদাহরণ: এখানে চিত্র বর্ণনা লিখুন

হরফ হ'ল জর্জিয়া। এখন, যদি আমি কনসোলে পরিবর্তন করি:

এখানে চিত্র বর্ণনা লিখুন

আমি মনে করি সমস্যাটি হ'ল নন-মনসপাসড ফন্টগুলিতে "স্পেস" এবং * একই স্থান গ্রহণ করে না। যদিও আমি কীভাবে এটি সমাধান করতে জানি না। আমি ইন্টারনেট অনুসন্ধান করেছি এবং নিজেই সূক্ষ্ম সূচনা করার জন্য কোনও টিউটোরিয়াল খুঁজে পাইনি। আমি org-indent.el পড়ার চেষ্টা করেছি তবে এটি বোঝার জন্য এটি অনেক দীর্ঘ shot সাহায্যের প্রশংসা করা হয়!


আমি ইমাসে আনুপাতিকভাবে ব্যবধানযুক্ত সেরিফ ফন্টগুলি ব্যবহার করতে চাই এবং অনুরূপ সমস্যাগুলির অভিজ্ঞতা পেয়েছি। আমি ভেবেছিলাম যে ফোন্টিফিকেশনটির জন্য সম্ভবত কিছু টুইটগুলি সহায়তা করতে পারে তবে আমি এখনও এটিকে পুরোপুরি সন্ধান করিনি।
খ্রিস্টান Gagné

1
এর মত শব্দগুলির সাথে অর্গ মোডের কোনও সম্পর্ক নেই এবং আপনি কেবল ভাবছেন যে কীভাবে নন-মোসোপাসেড ফন্টগুলি সারিবদ্ধ করা যায়। উত্তরটি হ'ল কোডটি ব্যবহার করে আপনার এটি করা দরকার - আপনি অন্যান্য অক্ষর ইত্যাদির সমান প্রস্থের স্থানের অক্ষরের উপর নির্ভর করতে পারবেন না, সংক্ষেপে, সাধারণত আপনি ভাগ্যের বাইরে চলে যান।
ড্র

@ অঙ্কিত আপনি "সাধারণভাবে" হতে পারে। তবে এই নির্দিষ্ট ইস্যুটির জন্য একটি সমাধান রয়েছে, আমার উত্তর দেখুন। দ্বারা ইন্ডেন্টেশন জন্য ব্যবহৃত প্রধান স্থানগুলি org-indentসত্যই সেখানে নেই, সেগুলি কেবলমাত্র line-prefixবৈশিষ্ট্য, তাই এটি অন্য কোনও অক্ষর দ্বারা প্রতিস্থাপিত করা যায় যতক্ষণ না এটি অদৃশ্য হয়।
অবচিত

@ ডেপ্রেসিটেড: আমি দেখছি। সংশোধনীর জন্য ধন্যবাদ. বিটিডাব্লু, সম্ভবত অর্গ নিজেই ডিফল্ট হতে পারে, আপনি যা পরামর্শ দেন তা করতে পারে। বা কেবল SPCঅক্ষর ব্যবহার করুন তবে পাঠ্য (বা ওভারলে) বৈশিষ্ট্য সহ এমন একটি মুখ চাপিয়ে দেয় যা (ডিফল্টরূপে) মনসপাসে ফন্ট থাকে। হতে পারে একটি org বর্ধনের অনুরোধটি ক্রমানুসারে। ;-)
ড্র হয়েছে

@ ড্র্রু এটি ফন্ট-লক দিয়ে আসলে খুব সহজ, তাই না?
ক্লিমেট

উত্তর:


9

একটি সমাধান হ'ল স্থান পরিবর্তনের org-indent-stringsপরিবর্তে নক্ষত্রের অক্ষর হিসাবে স্টার ব্যবহারের পরিবর্তনের জন্য। এর অর্থ হ'ল আনুপাতিক ফন্ট ব্যবহার করার পরেও ইন্ডেন্টের প্রস্থ সর্বদা সঠিক থাকবে। এরপরে কৌশলটি হ'ল ইনডেন্টেশনের অগ্রভাগের রঙটি পটভূমির রঙের মতোই সেট করা, যাতে তারার অদৃশ্য হয়ে যায়।

আমরা নিম্নলিখিত কোড সহ এটি অর্জন করতে পারি, যা ফাংশনটির পরামর্শ দেয় org-indent-initialize:

(require 'cl)
(defun org-indent-use-stars-for-strings ()
  "Initialize the indentation strings with stars instead of spaces."
  (setq org-indent-strings (make-vector (1+ org-indent-max) nil))
  (aset org-indent-strings 0 nil)
  (loop for i from 1 to org-indent-max do
    (aset org-indent-strings i
          (org-add-props
          (concat (make-string (1- i) ?*) ; <- THIS IS THE ONLY CHANGE
              (char-to-string org-indent-boundary-char))
          nil 'face 'org-indent))))

(advice-add 'org-indent-initialize :after #'org-indent-use-stars-for-strings)
(set-face-foreground 'org-indent "white")

ফলাফলটি ম্যাক ওএস এক্সে ব্যবহার করে আমার জন্য এর মতো দেখাচ্ছে emacs -Qএবং (set-face-font 'default :family "Gill Sans"):

এখানে চিত্র বর্ণনা লিখুন


হাই @ ডেপ্রেসিটেড, উত্তর দেওয়ার জন্য আপনাকে অনেক ধন্যবাদ! এটি একটি নির্বোধ প্রশ্ন তবে আমি কি আপনার কোডটি org-indent.el বা আমার init.el এ রেখে দেব? কেউই আমার পক্ষে কাজ করবে বলে মনে হচ্ছে না। আমি উইন্ডোগুলির নীচে ইম্যাক্স 24.4 ব্যবহার করছি, - আমাকে কিছু সংকলন করতে হবে বা কী? ধন্যবাদ!
অ্যালেক্স

ঠিক আছে আমি একটি বোকা প্রশ্ন জিজ্ঞাসা করেছি। আমাকে org-indent.el সংকলন করতে হবে। ভবিষ্যতে উল্লেখের জন্য: সহজতম উপায় এই লাইন পরিবর্তন করতে হবে (concat (make-string (1- i) ?\ ) করতে (concat (make-string (1- i) ?*) সংজ্ঞা এর org-indent-initializeঅর্থাত (defun org-indent-initialize... তারপর সংস্থা-indent.elc কম্পাইল সংস্থা-indent.el করার Mx বাইট কম্পাইল ফাইল ব্যবহার করুন। তারপরে ইমাকগুলি পুনরায় চালু করুন।
অ্যালেক্স

3

অবচিতের উত্তর খুব ভাল, তবে এটি আমার পক্ষে বেশ কার্যকর হয়নি। আমি বর্তমানে ইমাস 24.4 এবং org 8.2.4 এ রয়েছি, এবং উপদেশ দিচ্ছি যে org-indent-initializeকিছুই করা হয়নি। আমাকে পরিবর্তিত ইনডেন্ট চরিত্রের সাথে ফাংশনটির নতুন সংজ্ঞা দিতে হয়েছিল এবং এটি কাজ করেছিল। সম্ভবত আমি যখন ইমাস 24.5 এবং org 8.3 এ আপগ্রেড করব তখন পরামর্শ কার্যকর হবে।

তবে আমাকে আরও কয়েকটি সামঞ্জস্য করতে হয়েছিল, কারণ আমি বিভিন্ন শিরোনাম স্তরের জন্য বিভিন্ন আকারের ভেরিয়েবল-প্রস্থের ফন্ট ব্যবহার করি, যার অর্থ একটি স্তর -১ শিরোনাম *স্তর -২ এর সমান প্রস্থ নয়, ইত্যাদি।

সুতরাং আমারও এটি করতে হয়েছিল:

  1. একই আকারে একই ফন্ট ব্যবহার করেছেন তা নিশ্চিত করার জন্য মুখগুলি org-hide(শিরোনামের লাইনগুলি ইনডেন্ট করার জন্য ব্যবহৃত) এবং org-indent(নন-শিরোনামের লাইনগুলিকে ইনডেন্ট করতে ব্যবহৃত হত ) সেট করুন ।
  2. পরিবর্তনশীল সেট org-indent-boundary-characterকরার *ডিফল্ট পরিবর্তে (ক স্থান)। এটি হ'ল অক্ষরটি যা ইনডেন্টেশন অক্ষরের পরে contentোকানো হয় তবে সামগ্রীর আগে। এটি পরিবর্তন করা কোনও প্রয়োজনীয়তা কিনা আমি নিশ্চিত নই তবে এটি ধারাবাহিকতায় সহায়তা করবে বলে মনে হচ্ছে। এটি আপনি যে ফন্টটি ব্যবহার করছেন, আকারগুলি ইত্যাদির উপর নির্ভর করে

অবহেলিত org-indent-initializeহিসাবে পরিবর্তন করা ছাড়াও এই জিনিসগুলি করা তা দেখে মনে হয়েছে। আমি দেখতে এমন একটি বাফার দিয়ে শেষ করছি:

স্ক্রিনশট

আপনি দেখতে পাচ্ছেন যে শিরোনামের স্তরটি নীচে চলে যাওয়ার সাথে সাথে শিরোনামের পাঠ্যের সাথে ইন্ডেন্টেশনটি পুরোপুরি সরে যায় না। আমি মনে করি এটি নিম্ন-স্তরের শিরোনামগুলির জন্য ছোট ফন্টগুলি ব্যবহার করার কারণে এবং আমি মনে করি না যে এটি ঠিক করার কোনও সহজ উপায় আছে। পাঠ্য-বৈশিষ্ট্যগুলির মতো line-prefixএবং এর সাথে কিছু করা সম্ভব হতে পারে wrap-prefixকারণ এগুলি চিত্র এবং বিশেষ অক্ষরগুলিতে সেট করা যেতে পারে তবে এটি সম্ভবত জটিল এবং ধীর হতে পারে। আপনি যদি সমস্ত শিরোনামের স্তরের জন্য একই ফন্টের আকারটি ব্যবহার করেন তবে এটি সম্ভবত কোনও সমস্যা হবে না।

যাইহোক, সম্ভবত এটি যথেষ্ট ভাল। :)

পিএস অনুরোধ হিসাবে, এখানে আমার org-levelমুখ। এগুলি থেকে অনুলিপি করা হয় custom-set-faces, তবে আপনি এটি ব্যবহার না করলে আপনি এগুলি এর customizeবাইরে সেট করতে পারেন।

 '(org-level-1 ((t (:inherit variable-pitch :foreground "#cb4b16" :weight bold :height 1.3))))
 '(org-level-2 ((t (:inherit variable-pitch :foreground "#859900" :weight bold :height 1.2))))
 '(org-level-3 ((t (:inherit variable-pitch :foreground "#268bd2" :weight bold :height 1.15))))
 '(org-level-4 ((t (:inherit variable-pitch :foreground "#b58900" :weight bold :height 1.1))))
 '(org-level-5 ((t (:inherit variable-pitch :foreground "#2aa198" :weight bold))))
 '(org-level-6 ((t (:inherit variable-pitch :foreground "#6c71c4" :weight bold))))
 '(org-level-7 ((t (:inherit variable-pitch :foreground "#d33682" :weight bold))))
 '(org-level-8 ((t (:inherit variable-pitch :foreground "#dc322f" :weight bold))))

@ ব্লুজেয় আমার কেমন লাগছে তা পছন্দ হয়েছে। এটি কোথাও পোস্ট করার জন্য আপনার সম্পূর্ণ কনফিগারেশন রয়েছে?
এরিকস্টোক

ঠিক আছে, আমি solarized-darkথিমটি ব্যবহার করছি , solarized-themeযা আপনি প্যাকেজের অংশ যা আপনি ইএলপিএ থেকে ইনস্টল করতে পারেন। org-level-*মুখগুলি হিসাবে , আমি তাদের উপরের উত্তরে যুক্ত করব।
blujay

এটি দুর্দান্ত দেখতে দুর্দান্ত। এই বিশেষ চিহ্নগুলির সাথে আপনি কীভাবে ডিফল্ট * প্রতিস্থাপন করবেন?
অ্যালেক্স

এটা org-bulletsপ্যাকেজ থেকে । চালান package-list-packagesএবং দিয়ে শুরু সমস্ত প্যাকেজ খুঁজে বার করো org-। :)
blujay

2

কোনওভাবেই আমি আমার সেটআপটির জন্য অন্য উত্তরগুলি পেতে পারি না, তবে আমার পক্ষে সবচেয়ে দ্রুত এবং সহজতম সমাধানটি হ'ল:

`M-x customize-face org-hide`

তারপরে, কেবল Font Familyআপনার মনোস্পেস ফন্টের বৈশিষ্ট্যটি পরিবর্তন করুন (আমার ক্ষেত্রে, Iosevka)।

এবং আক্ষরিকভাবে আপনার যা করতে হবে তা যেহেতু org-indent(আউটলাইন ইনডেন্টেশনের মুখ) স্বয়ংক্রিয়ভাবে উত্তরাধিকার সূত্রে প্রাপ্ত org-hide(প্রধান শিরোনামে শীর্ষস্থানীয় তারাগুলি আড়াল করতে ব্যবহৃত মুখ)

এখানে চিত্র বর্ণনা লিখুন


1

একটি আরও সহজ সমাধান: org মোডে, M-:নিম্নলিখিত টিপুন এবং চালান

(font-lock-add-keywords 
 nil 
 '(("^[[:space:]*]+" 0 '(face (:family "Ubuntu Mono")) append))
 'append)

এর M-x font-lock-fontify-bufferপরে আপনার প্রয়োজন হতে পারে । এই সমাধানটি সরল অক্ষরগুলিকে (স্পেস এবং তারাগুলি) একটি মনোস্পেস ফন্ট ব্যবহার করতে বাধ্য করে।

এছাড়াও, আপনি "উবুন্টু মনো" আপনার নির্বাচনের মনোস্পেস ফন্টের সাথে প্রতিস্থাপন করতে চান,


অন্যান্য সমাধানগুলি বিবেচনা করার জন্য এটি আর প্রয়োজন নেই। :)
blujay
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.