সাবট্রির সামগ্রীগুলি তাদের শিরোনাম ছাড়াই রফতানি করা সম্ভব?


28

আমি org-মোডে নথিগুলি খসড়া করি এবং প্রয়োজনীয় হিসাবে সেগুলি ল্যাটেক্স, এইচটিএমএল ইত্যাদিতে রফতানি করি। আমি প্রায়শই ট্যাগটি ব্যবহার করি :no_export:যখনই আমি আউটপুটটিতে একটি নির্দিষ্ট সাবট্রি প্রদর্শন করতে চাই না।

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

আমি আদর্শ মত একটি ট্যাগ কল্পনা করছি :no_title:। আমি চাইছি আমার org- মোডের রূপরেখাটি আমি যেভাবে অভ্যস্ত তা আরও কম-বেশি দেখতে চাই। তবে আমি অনুরূপ ফলাফল সহ অন্যান্য পদ্ধতির বিবেচনা করব।

উদাহরণস্বরূপ, এখানে org- মোডে খসড়া নথির একটি MWE।

* Chapter 1
** Section 1
*** Paragraph 1      :no_title:
First paragraph of text in the section.
*** Paragraph 2      :no_title:
Second paragraph of text in the section.
* Chapter 2
** Section 1
*** Subsection 1
**** Paragraph 1      :no_title:
First paragraph of text in the subsection.
**** Paragraph 2      :no_title:
Second paragraph of text in the subsection

আমি যখন বর্তমানে রফতানি করি, তখন আমি এরকম কিছু পাই:

1 অধ্যায় 1

1.1 ধারা 1

১.১.১ অনুচ্ছেদ 1: নং_ শিরোনাম:

বিভাগে পাঠ্য প্রথম অনুচ্ছেদ।

১.১.২ অনুচ্ছেদ 2: নো টাইটেল:

বিভাগে পাঠের দ্বিতীয় অনুচ্ছেদ।

2 অধ্যায় 2

২.১ ধারা ১

২.১.২ উপধারা ১

◊ 2.1.1.1 অনুচ্ছেদ 1: নং শিরোনাম:

অনুচ্ছেদে পাঠ্যের প্রথম অনুচ্ছেদ।

তবে আমি যা চাই তা আরও বেশি:

1 অধ্যায় 1

1.1 ধারা 1

বিভাগে পাঠ্য প্রথম অনুচ্ছেদ।

বিভাগে পাঠের দ্বিতীয় অনুচ্ছেদ।

2 অধ্যায় 2

২.১ ধারা ১

২.১.২ উপধারা ১

অনুচ্ছেদে পাঠ্যের প্রথম অনুচ্ছেদ।

উত্তর:


27

আপনার লক্ষ্যটি অর্জনের এটি পছন্দসই উপায় হতে পারে (এর সরলতার কারণে) - মনে হয় এটি অন্য উত্তরের মন্তব্যে সমাহিত হয়েছে:

  1. আপনার .emacsফাইলে নিম্নলিখিতগুলি যুক্ত করুন:

    (require 'ox-extra)
    (ox-extras-activate '(ignore-headlines))
    
  2. ignoreআপনি অগ্রাহ্য করতে চান এমন শিরোনামগুলিতে ট্যাগটি ব্যবহার করুন (যখন তাদের বিষয়বস্তু উপেক্ষা করবেন না)

দ্রষ্টব্য: আপনি org- মোড ইনস্টল করতে ELPA ব্যবহার করছেন, আপনাকে অবশ্যই ELPA সংগ্রহস্থলের তালিকায় org- মোড সংগ্রহস্থল যুক্ত করতে হবে। দেখুন এখানে আরো বিস্তারিত জানার জন্য। এটি হয়ে যাওয়ার পরে প্যাকেজ তালিকাটি রিফ্রেশ করুন ( M-x package-refresh-contents) এবং org-plus-contribপ্যাকেজটি ইনস্টল করুন (উদাহরণস্বরূপ M-x package-install)। কোনও পুরানো org- মোড ইনস্টলেশন থেকে মুক্তি পেতে ভুলবেন না।


2
এটা সঠিক উত্তর.
রাসমাস

আমি এটি উত্তর হিসাবে গ্রহণ করেছি যদিও এটি আমার পক্ষে কার্যকর হবে না as আমি org-extra.el লোড করার চেষ্টা করেছি কিন্তু অন্য কিছু ফাংশন এখনও অনুপস্থিত (আমি org 8.2.4 এ আটকে আছি)।
ব্রায়ান জেড

আমি প্যাকেজটি অক্স-এক্সট্রা খুঁজে পাচ্ছি না ...
টুথরট

1
@ টুড্রোট এটি contrib/lispফোল্ডারে রয়েছে - orgmode.org/cgit.cgi/org-mode.git/tree/contrib/lisp/ox-extra.el দেখুন - আপনার ইম্যাক্স কনফিগারেশনের ফাইলটিতে আপনাকে এর মতো একটি লাইন যুক্ত করতে হবে (add-to-list 'load-path "/path/to/contrib/lisp")
চিহ্নিত করুন

মনে রাখবেন যে এটি org 8.3+ এ কেবলমাত্র শব্দ words এবং আপনি কেবল অক্স-এক্সট্রা.এল ধরতে পারবেন না, যার মধ্যে 8.3+ নির্ভরতা রয়েছে। প্রয়োজনীয় ফাইলগুলি সন্ধান না করা সম্পর্কে রফতানিতে ত্রুটি পাবেন।
ডডজি

16

হ্যাঁ , এটি সম্পূর্ণ সম্ভব। আপনার init-ফাইলটিতে নিম্নলিখিত কোডটি যুক্ত করুন:

(defun org-remove-headlines (backend)
  "Remove headlines with :no_title: tag."
  (org-map-entries (lambda () (delete-region (point-at-bol) (point-at-eol)))
                   "no_title"))

(add-hook 'org-export-before-processing-hook #'org-remove-headlines)

প্রাপ্তি স্বীকার

এই প্রশ্নটি স্ট্যাকওভারফ্লোতে আগে জিজ্ঞাসা করা হয়েছিল (অন্যরকম ফোকাস এবং শব্দের সাথে, সম্ভবত এই কারণেই আপনি এখানে পোস্ট করার আগে ইন্টারনেট অনুসন্ধান করার সময় আপনি এটি সনাক্ত করতে সক্ষম হননি)। উপরের কোডটি গৃহীত উত্তরে কোডের একটি সরল সংস্করণ ; এটি 8.0 তে প্রবর্তিত নতুন রফতানিকারীর জন্য কাজ করে org-modeএবং এটি ব্যাকএন্ড-অজোনস্টিক

হালনাগাদ

মন্তব্যে আলোচিত হিসাবে, উপরের কোডটি রফতানি দলিল থেকে বাদ দেওয়ার জন্য ট্যাগ হওয়া কোনও এন্ট্রি দ্বারা পূর্ববর্তী হয় যদি তা দ্বারা ট্যাগ করা এন্ট্রিগুলির বিষয়বস্তুগুলি :no_title:অদৃশ্য হয়ে যায় । উদাহরণস্বরূপ, নিম্নলিখিত দস্তাবেজটি রফতানি শিরোনাম এবং টিওসি সহ একটি নথি তৈরি করবে, তবে কোনও সামগ্রী নেই:

#+EXCLUDE_TAGS: no_export

* No export                          :no_export:
  This is not meant for you to see.
* No title                           :no_title:
  You should see this.

এই জন্য কারণ যে org-modeঅপসারণ শিরোনামটি সঙ্গে বাঁধা :no_title:আগে সরিয়ে ফেলা হবে এন্ট্রি যার শিরোনাম দিয়ে ট্যাগ করা হয় :no_export:। ফলস্বরূপ, এটি যখন no_exportএন্ট্রি সরিয়ে ফেলার কাছাকাছি আসে, তখন এন্ট্রিটির বিষয়বস্তু no_titleপূর্ববর্তী no_exportএন্ট্রি সম্পর্কিত বলে বিবেচনা করে। এটি নিখুঁত ধারণা দেয় কারণ কোনও কাঠামোগত উপাদান (শিরোনাম) নেই যা মূল প্রবেশের বিষয়বস্তুগুলিকে আলাদা করে।

এই সমস্যাটি সমাধান করার জন্য, আমরা no_exportএন্ট্রি অপসারণের জন্য দায়িত্ব স্থানান্তর করতে পারি org-remove-headlines। এইভাবে, আমরা নিশ্চিত করি যে no_exportপ্রবেশগুলি থেকে শিরোনামগুলি সরানোর আগে সমস্ত এন্ট্রি চলে গেছে no_title:

(defun org-remove-headlines (backend)
  "Remove headlines with :no_title: tag."
  (org-map-entries (lambda () (let ((beg (point)))
                                (outline-next-visible-heading 1)
                                (backward-char)
                                (delete-region beg (point))))
                   "no_export" tree)
  (org-map-entries (lambda () (delete-region (point-at-bol) (point-at-eol)))
                   "no_title"))

(add-hook 'org-export-before-processing-hook #'org-remove-headlines)

আমি এটিকে অনেক ব্যবহার করছি, তাই ধন্যবাদ! তবে আমি একটি সমস্যা লক্ষ্য করেছি ... শিরোনাম সহ একটি শিরোনামটি যদি একটি ট্যাগ করার no_exportআগে আসে no_titleতবে দ্বিতীয় শিরোনামের সামগ্রীগুলিও রফতানি হয় না।
ব্রায়ান জেড

@ ব্রায়ানজ আপনাকে স্বাগতম! হয় no_exportএবং no_titleশিরোনাম ভাইবোন (অর্থাত, তারা নেতৃস্থানীয় তারার একই সংখ্যক আছে)? যদি তা না হয় তবে দুটি শিরোনামের মধ্যে কোনটির বেশি তারা রয়েছে?
এরজেড

তারা ভাই - বোন. এই খেলনা উদাহরণের রফতানিতে আমার কাছে মোটেও
ব্রায়ান জেড

1
@ ব্রায়ানজেড নিজেই, org-remove-headlinesএকটি ফাংশন; এটি কোথাও থেকে ডাকা হয় না, এটি আপনাকে বেশি সাহায্য করবে না। সুতরাং হ্যাঁ, (add-hook 'org-export-before-processing-hook #'org-remove-headlines)সঠিক আচরণ সক্ষম করতে আপনার এখনও রেখাটি মূল্যায়ন করতে হবে। আমার মূল উত্তরটির সম্পাদনাগুলিতে আমার সম্ভবত এটি স্পষ্ট হওয়া উচিত ছিল। আপনি যে সতর্কতাগুলি দেখছেন সেগুলি সম্পর্কে: আমি ভ্যানিলা ইম্যাকস 24.4 এবং অরগ মোডের 8.2.10 সংস্করণযুক্তগুলি পাই না। আপনি যে সতর্কতাটি উল্লেখ করেছেন তা থেকে মুক্তি পাওয়ার জন্য আপনি লাইনটি (require 'org-agenda)মূল্যায়ন করার আগে চেষ্টা করতে পারেন add-hook
এরজেড

2
Org অবদান হিসাবেও এই বৈশিষ্ট্যটি প্রয়োগ করা হয়েছে। রেফ: অরগমোড.আর.জি.সি.জি.টি.সি.গি.
অর্গমোড.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.