Org- মোড কাঠামোটিকে ডট উত্সে রূপান্তর করুন


12

অরগ-মোডে নোটগুলি তৈরি করার সময় গাছের মতো কাঠামোর কাঠামোগুলি থেকে দ্রুত প্রজন্মের গ্রাফগুলি খুব কার্যকর হতে পারে যার জন্য ভাগ করে নেওয়া এবং বা অন্য মানুষের জন্য সৌন্দর্য বর্ধনের প্রয়োজন।

ম্যানুয়ালি একটি ডায়নামিক ডট / গ্রাফভিজ ব্লক তৈরি করা ছাড়া আমি এটি করার আর কোনও উপায় খুঁজে পাই না।

কাঠামোগত গাছ থেকে একটি সাধারণ নির্দেশিত গ্রাফের অনুবাদ মোটামুটি সোজা হওয়া উচিত।

আমি একটি org- মোড গাছ (একটি নির্বাচিত অঞ্চল) অতিক্রম করার এবং গাছের কাঠামো (এবং বিকল্পের কাঠামোর বিষয়বস্তু থেকে কিছু তথ্য) একটি ডট গ্রাফ অনুবাদ করতে একটি সহজ উপায় সন্ধান করছি।

আমি সম্ভবত এটির সাথে প্রথম উপস্থিত হতে পারি না। এটি কি সমাধান হয়েছে?

ইনপুট

* la1
** la2
*** la3
*** la4
** la5

এবং সম্ভবত একটি পরিবর্তনশীল org-to-dot-preamble

digraph {
   rankdir=TB;
   splines=true;
   node [shape=box];

আউটপুটটি একটি org- মোড ডায়নামিক ব্লকের মতো দেখায়

#+BEGIN_SRC dot :file out.png :cmdline -Kdot -Tpng
(contents of org-to-dot-preamble)

la1 -> la2
la1 -> la5
la2 -> la3
la2 -> la4
}
#+END_SRC

আরও উন্নত সংস্করণ প্রথমে সমস্ত নোড ঘোষণা করবে এবং কিছু ফর্ম্যাটিংয়ের অনুমতি দেবে।

ইনপুট

* la1
  firstline
  secondline
** la2
   firstline
   secondline
*** la3
*** la4
    firstline
** la5

কিছু ফর্ম্যাটিং ভেরিয়েবল

org-to-dot-shape
org-to-dot-font

আউটপুট

#+BEGIN_SRC dot :file out.png :cmdline -Kdot -Tpng
(contents of org-to-dot-preamble)

la1 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la2 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la3 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la4 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]
la5 [shape=Mrecord, label="{firstline|secondline}", fontname = "helvetica"]

la1 -> la2
la1 -> la5
la2 -> la3
la2 -> la4
}
#+END_SRC

বিদ্রূপযুক্ত ফলাফলের একটি org- মোড বাফার থেকে স্ক্রিনশট


খুব মজার প্রশ্ন! রূপান্তর কোডটি কি অন্য একটি org- মোড বাফারের একটি ডট গ্রাফ তৈরি করতে পারে বা এটি নিজস্ব বাফার? দুর্দান্ত ধারণা!
মেলিওরাটাস

হ্যাঁ এটি কার্যকর হবে, টিকজেড কীভাবে ল্যাটেক্স ডকুমেন্টে রেন্ডার করে তা সাজান।
ইমাস ব্যবহারকারী

@ মেলিওরাটাস: আমি কেবলমাত্র নির্বাচিত অঞ্চলটি ব্যবহার করার এবং ফলস্বরূপ ডট কোডটি কিল রিংয়ে রাখার জন্য বা কেবলমাত্র বিন্দুতে সন্নিবেশ করানোর জন্য ভাবছিলাম।
ওয়ার্নার

উত্তর:


4

এখানে একটি কার্যকারী উদাহরণ যা org-elementবাফার শিরোনামগুলি পার্স করতে এপিআই ব্যবহার করে :

* la1
** la2
*** la3
*** la4
** la5
**  Org element API test

#+name: lista
#+begin_src elisp
  (org-element-map (org-element-parse-buffer 'headline )
      'headline
    (lambda(hl)
      (let ((parent (org-element-property :parent hl )))
        (and (eq (org-element-type parent) 'headline)
             (list (org-element-property :title parent) (org-element-property :title hl))))))

#+end_src

#+RESULTS: lista
| la1 | la2                  |
| la2 | la3                  |
| la2 | la4                  |
| la1 | la5                  |
| la1 | Org element API test |

#+name: make-dot
#+BEGIN_SRC emacs-lisp :var table=lista :results output :exports none
  (mapcar #'(lambda (x)
                (princ (format "\"%s\" -> \"%s\";\n" (first x) (second x))))
          table)
#+END_SRC

#+RESULTS: make-dot
: "la1" -> "la2";
: "la2" -> "la3";
: "la2" -> "la4";
: "la1" -> "la5";
: "la1" -> "Org element API test";

#+BEGIN_SRC dot :file dependencias.pdf :cmdline -Tpdf :var input=make-dot :exports results
digraph {
   rankdir=TB;
   splines=true;
   node [shape=box];
   $input
  }
#+END_SRC

#+CAPTION: Dependency diagram
#+RESULTS:
[[file:dependencias.pdf]]

এটি বেশ কয়েকটি পদক্ষেপে কাজ করে: প্রথমে একটি এলিস্প ব্লক org-element-parse-bufferসমস্ত শিরোনাম পেতে ব্যবহার করে এবং পিতামাতার শিরোনাম এবং শিরোনাম শিরোনামের একটি তালিকা বের করে।

তারপরে আরেকটি উত্স ব্লক এই তালিকাটিকে ডট সিনট্যাক্সে রূপান্তরিত করে।

তৃতীয় বিন্দু উত্স ব্লকে DOT মোড়ানো রয়েছে এবং এতে উত্পন্ন সম্পর্কগুলি অন্তর্ভুক্ত রয়েছে।

কসমেটিক বর্ধনসমূহ: নিজেই পরীক্ষার জন্য বিভাগটি ফিল্টার করুন; আপনি এই বিভাগে একটি ট্যাগ যুক্ত করতে পারেন এবং প্রথম ব্লকে ট্যাগ করে ফিল্টার আউট করতে পারেন।


ফ্যান্টাস্টিক! এটা অসাধারণ!
RUserPassingBye

3

আপনি http://pages.sachachua.com/evil-plans/ এর নীচ থেকে কিছু কোড পুনরায় ব্যবহার করতে সক্ষম হতে পারেন । আমি মূলত আমার শিরোনামগুলি দেখতে org-map - এন্ট্রি ব্যবহার করি। যেহেতু আমার কাছে কড়া গাছের পরিবর্তে নির্দেশিত গ্রাফ রয়েছে, তাই আমি মানব-বান্ধব পাঠ্য থেকে লিঙ্কের কাঠামোটিকে বিশ্লেষণ করতে সাধারণ নিয়মিত অভিব্যক্তি অনুসন্ধানগুলি ব্যবহার করি। আপনি যদি কেবল একটি গাছের সাথে কাজ করছেন তবে আপনি সরাসরি শিরোনাম থেকে আপনার গাছের কাঠামো তৈরি করতে পারেন। এর পরে, এটি যথাযথ গ্রাফভিজ সিনট্যাক্স উত্পন্ন করার বিষয়, এবং org-babel এটি উত্পাদন করতে এবং এটিকে পিএনজি বা এসভিজিতে রূপান্তর করতে পারে। আশা করি এইটি কাজ করবে!


এটি একটি দুর্দান্ত org ফাইল এবং কয়েকটি দুর্দান্ত গ্রাফ।
db48x

3

এটি বিন্দু নয়, তবে আপনি যদি তাড়াহুড়া করেন তবে অনুসরণগুলি সহায়ক হতে পারে।

org-plus-contribOrg- মোড ডকুমেন্টগুলি থেকে একটি মানচিত্র তৈরি করতে আমাদের দরকার এবং ফ্রিমাইন্ড.এপ।

org-plus-contribদ্বারা ডাকা অতিরিক্ত org- মোড প্যাকেজ ইনস্টল করুন M-x package-list-packages

সম্ভবত আমাদের যোগ করার প্রয়োজন হতে পারে

(require 'ox-freemind)

আমাদের .emacs।

তারপর আমরা দ্বারা * .mm ফাইল Freemind আমাদের সংস্থা-মোড ফাইল রপ্তানি করতে পারেন C-c C-e f f, org-freemind-export-to-freemind

এখন আমরা ফ্রিমাইন্ড.এপ থেকে *। মিমি খুলি, এবং ভয়েলা!

সংস্থা-টু-MM-মাউস-ওভার

নোডের সামগ্রীগুলি দেখতে মাউস করুন।


1

আপডেট: 2019

Org-mind-map নামে একটি প্যাকেজ রয়েছে

https://github.com/theodorewiles/org-mind-map

এটি বিন্দু ভাষা ব্যবহার করে org- মোড ফাইলগুলি থেকে গ্রাভিজ পরিচালিত গ্রাফগুলি তৈরি করে।

Org-mind-map ইনস্টল করার পরে আপনি একটি org ফাইল রপ্তানি করতে পারেন C-c C-eএবং "একটি গ্রাফ & ডট ফাইল তৈরি করুন" নির্বাচন করতে পারেনg d

এটি আপনার org ফাইল থেকে একটি ডট ফাইল তৈরি করবে। এতে ডিফল্টরূপে org-mind-map প্যাকেজ থেকে কিছু ভিজ্যুয়াল কাস্টমাইজেশন থাকবে। আপনি এগুলি সম্পাদনা করতে পারেন বা প্রাসঙ্গিক অংশগুলি একটি নতুন ডট ফাইলে অনুলিপি করতে পারেন।

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