Org-babel ফলাফলগুলি কি কোড মন্তব্য হিসাবে আউটপুট হতে পারে?


13

ব্লগ, পাঠ্যপুস্তক ইত্যাদিতে কিছু কোডের ফলাফল মন্তব্য হিসাবে প্রদর্শন করা সত্যিই সাধারণ:

(+ 1 1) ;=> 2

অর্গ-মোডের ব্যাবেল বৈশিষ্ট্যটি ব্যবহার করে স্বয়ংক্রিয়ভাবে ফলাফলগুলি প্রদর্শনের কোনও উপায় আছে কি?

বিশেষত, আমি যা চাই তা এইরকম একটি শিরোনাম নির্দিষ্ট করতে সক্ষম হতে পারে:

#+begin_src scheme <some headers>
(+ 1 1)
(/ 4 (* 2 2))
#+end_src

আমি যখন নিম্নলিখিতগুলিতে পরিণত হবে C-c C-c:

#+begin_src scheme <some headers>
(+ 1 1) ;=> 2
(/ 4 (* 2 2)) ;=> 1
#+end_src

এবং তারপরে যদি আমি কিছু পরিবর্তন করি, তবে ...

#+begin_src scheme <some headers>
(+ 1 5) ;=> 2
(/ 8 (* 2 2)) ;=> 1
#+end_src

... এবং C-c C-c, এটি আপডেট হওয়া প্রতিক্রিয়ার সাথে মন্তব্যগুলি প্রতিস্থাপন করবে:

#+begin_src scheme <some headers>
(+ 1 5) ;=> 6
(/ 8 (* 2 2)) ;=> 2
#+end_src

বা, আমি উপরে যা স্বপ্ন দেখেছি তার সংক্ষেপে, গিথুবের org ফাইল রেন্ডারারের দ্বারা ফলাফলগুলি প্রদর্শনের একটি সহজ উপায় আছে, সুতরাং নিম্নলিখিতটি দৃশ্যমান হবে (আদর্শভাবে আমি নথির স্তরে নির্দিষ্ট করে ফর্ম্যাট করে):

#+RESULTS:
: 2

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

উত্তর:


7

এটা চেষ্টা কর

আপনার nowebকোডকে একটি সাক্ষর প্রোগ্রামে পরিণত করতে নামযুক্ত কোড ব্লক এবং শিরোনাম ব্যবহার করুন ।

#+NAME: my-code
#+BEGIN_SRC elisp :exports none 
(+ 1 1)
#+END_SRC

#+NAME: my-other-code 
#+BEGIN_SRC elisp :exports none 
(/ 4 (* 2 2))
#+END_SRC

orgআপনার ফলাফলের সাথে আপনার কোডটি ফর্ম্যাট করতে একটি কোড ব্লক তৈরি করুন

#+BEGIN_SRC org :results drawer replace :noweb yes :exports results 

  ,#+NAME: my-code-with-answer
  ,#+BEGIN_SRC elisp  :exports code 
  <<my-code>> ;=> <<my-code()>>
  <<my-other-code>> ;=> <<my-other-code()>>
  ,#+END_SRC


#+END_SRC

একটি কি C-c C-cউপর orgকোড ব্লক এবং আপনি নিচের কোড অনুরূপ ফলাফল দেখতে করা উচিত:

#+RESULTS:
:RESULTS:

#+NAME: my-code-with-answer
#+BEGIN_SRC elisp  :exports code 
(+ 1 1) ;=> 2
(/ 4 (* 2 2)) ;=> 1
#+END_SRC

:END:

আপনি যদি গিথুবে কোড পোস্ট করেন তবে আপনার দেখা উচিত

(+ 1 1) ;=> 2
(/ 4 (* 2 2)) ;=> 1

এই কোডটি
জিএনইউ ইম্যাক্স 24.5.1 (x86_64-অজানা-সাইগউইন, জিটিকে + সংস্করণ 3.14.13)
অর্গ-মোড সংস্করণ: 8.3.2
এবং গিথুব দিয়ে পরীক্ষা করা হয়েছিল ।


ধন্যবাদ। এটি একটি সহায়ক পদ্ধতি এবং আমি যেভাবে চাই ফলাফলের ফরম্যাটের অনুমতি দিতে যথেষ্ট নমনীয় বলে মনে হচ্ছে। তবে, আমি মনে করি এটি (আমার নিজস্ব সমাধানের মতো) দ্রুত নোট বা ব্লগ পোস্টগুলির জন্য সুবিধাজনক হওয়ার পক্ষে খুব ভার্জোজ, যা আমি খুঁজে পেতে আশা করছিলাম। যদিও এই কার্যকারিতা নিয়ে বাবেল বিল্ডিংয়ের কিছু পরিবর্তন আমাকে সেখানে পেতে পারে।
parkeristypeing

1
@ পার্কারিস্টিপিং - আমি সম্মত এটা অনেক ভার্জোজ। যদি এটি এমন কিছু হয় যা আমি প্রায়শই প্রায়শই করতে যাচ্ছি, যেমন ব্লগ, আমি সাধারণত ধাপ 2 এ ফর্ম্যাট করা org কোড উত্পন্ন করতে কিছু টেম্পলেট কোড লিখি Then তারপর আমি কেবল টেমপ্লেট জেনারেটরে পাস হওয়া একটি পরিবর্তনশীল আপডেট করি, যেমন :var my_code='("my-code" "my-other-code")। তবুও এটি আমার চেয়ে আরও জটিল। আপনি কি আমার উত্তর আপডেট করতে চান?
মেলিওরাটাস

@ পার্কারিস্টিপিং - আমি অন্য একটি উপায় আবিষ্কার করেছি তবে এর জন্য আপনাকে মূল org ফাইলটি রফতানি করতে হবে এবং গিটহাবে এক্সপোর্টটি পোস্ট করতে হবে।
মেলিওরাটাস

3

বিদ্যমান বাবেলের কার্যকারিতা সহ আমি যে নিকটতমটি অর্জন করতে পেরেছি তা হ'ল:

প্রথমত, ফলাফলগুলি পুনরায় সরবরাহ করতে আমি ইমাস-লিস্প ফাংশনটি সংজ্ঞায়িত করি ";=> ":

#+name: commentify
#+begin_src emacs-lisp :var result="" :exports none
(concat ";=> " (format "%s" result))
#+end_src

তারপরে আমি :postশিরোলেখ ব্যবহার করে ফলাফলগুলি প্রক্রিয়া করি :

#+begin_src scheme :post commentify(*this*) :results code :exports both
(+ 5 7)
#+end_src

এটি নিম্নলিখিতটি ফেরত দেয় C-c C-cযা :exports bothশিরোনামের কারণে গিথুব-এ প্রদর্শিত হয় তবে এটি একটি পৃথক কোড ব্লকে রয়েছে।

#+RESULTS:
#+BEGIN_SRC scheme
;=> 12
#+END_SRC

আমি মনে করি এই কৌশলটি org ফাইলটিকে খুব বেশি বিশৃঙ্খলাযুক্ত করে রাখবে যদিও এটি উপযুক্ত। এবং, যদি না আমি কোড মূল্যায়ন নিশ্চিতকরণটি অক্ষম না করি, আমাকে দুটি গ্রহণ করতে হবে "আপনি কি কোডের মূল্যায়ন করতে নিশ্চিত?" অনুরোধ জানায় (স্কিম ব্লকের জন্য একটি এবং এলিস্পের জন্য একটি commentify)।


1

আপনি এর মতো কিছু করতে পারেন:

  1. যথারীতি আপনার নামযুক্ত মাল্টি-লাইন উত্স কোড ব্লকটি লিখুন

  2. থেকে মোড়ানো পরিবর্তন BEGIN/END_SRCকরতে …-EXAMPLE:

    # + NAME: আসল উত্স
    # + BEGIN_EXAMPLE ইমাস-লিস্প
    (+ 3 4)
    (* 4 47)
    + # END_EXAMPLE
  1. প্রথম কোড ব্লকের অধীনে এই ব্লকটি আটকান এবং সম্পাদন করুন।
    # + NAME: লিসপব্লক
    # + শিরোনাম:: এলআরসিএমডি = বাস্তব উত্স
    # + BEGIN_SRC emacs-lisp: ফলাফল আউটপুট: src emacs-lisp মোড়ানো
    (ডলিস্ট (সেন্টিমিডি (বিভক্ত-স্ট্রিং এলসিএমডি "\ n"))
      (যদি না (স্ট্রিং = "" সেন্টিমিটার))
        (princ
         ("% s \ t; →% s format n" ফর্ম্যাট করুন
                 সেন্টিমিটার (ইওয়াল (গাড়ি (স্ট্রিং থেকে স্ট্রিমি সেন্টিমিডে)))))))
    + # END_SRC
  1. ফলাফল:
    # + ফলাফল: লিসপব্লক
    # + BEGIN_src emacs-lisp
    (+ 3 4); । 7
    (* 4 47); 8 188
    + # END_src
  1. আপনার পাঠ্যের প্রয়োজন অনুসারে পৃথক নামের সাথে অতিরিক্ত মাল্টি-লাইন উত্স ব্লক যুক্ত করুন

  2. #+CALL:আপনি যেখানে lcmdsভেরিয়েবল হিসাবে ব্লকের নাম দিন সেখানে লাইন যুক্ত করুন । উপরের রূপান্তরকারী ব্লকটি প্রতি নথিতে একবারে প্রয়োজন is

নোট করুন যে রূপান্তরকরণ ব্লকটি আপনি চিকিত্সা করছেন সেই ভাষায় রচনা করা উচিত।

আমি প্রথমে @ মেলিওরেটাস থেকে ভাল সমাধানটি "স্বয়ংক্রিয়করণ" করার চেষ্টা করেছি, তবে আমি যখন উপরের সমাধানটিতে পৌঁছালাম তখন এটির সাথে সমস্যার মধ্যে পড়েছিলাম।

কোড-ব্লক-সমস্যা সহ নম্বর-তালিকা-এড়াতে প্রয়োজনীয় ফিক্সটি নির্দেশ করার জন্য @ জেপকোত্তা থ্যাঙ্ক্স


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