कस्टम फॉन्टिफिकेशन के साथ ऑर्ग मोड में कस्टम पैराग्राफ को कैसे परिभाषित करें?
मैं कस्टम फ़ॉन्ट के साथ कस्टम मोड को ऑर्गन मोड में कैसे परिभाषित कर सकता हूं, उदाहरण के लिए कुछ
#+BEGIN_MYPAR
Some text
#+END_MYPAR
फिर मैं उदाहरण के लिए चाहता हूं कि यह ब्लॉक नारंगी फ़ॉन्ट रंग में प्रदर्शित किया गया है, एक पाठ के बाकी हिस्सों की तुलना में बड़ा है, बोल्ड चेहरा और एक टैब से इंडेंट किया गया है।
मैं यह कैसे कर सकता हूँ?
संपादित करें :
सवाल यह है कि कैसे एमएसीएस बफर में चीजों को प्रदर्शित किया जाता है, निर्यात में नहीं (हालांकि यह एक अनुवर्ती प्रश्न हो सकता है)।
जवाब
यदि आप विशेष ब्लॉकों के बजाय स्रोत ब्लॉकों का उपयोग करते हैं तो आप अपने लक्ष्य तक काफी सरल पहुंच जाते हैं। अपनी स्वयं की प्रमुख विधा को परिभाषित करें, mypar-mode
इसकी सहायता से define-generic-mode
कहें या define-derived-mode
उस प्रमुख विधा के लिए फ़ॉन्टकरण सेटअप करें जैसे आप चाहते हैं।
सुनिश्चित करें कि org-src-fontify-natively
और org-src-preserve-indentation
दोनों इस तरह सेट हैं कि mypar
ऑर्ग बफर में स्रोत ब्लॉक जितना संभव हो उतना फॉरेस्टेड स्रोत बफ़र्स की तरह दिखते हैं।
यदि आपने htmlizeस्थापित किया है, तो आप HTML निर्यात में अधिकांश वांछित फ़ॉर्मेट मुफ्त में प्राप्त कर सकते हैं।
एक कोड उदाहरण जिसे मैंने Emacs 27.1 और Org 9.3.7 के साथ परीक्षण किया है:
(require 'org)
(require 'cl-lib)
(define-generic-mode mypar-mode
nil ;; comment-list
nil ;; keyword-list
;; font-lock-list:
'(("^.*$"
;; match-highlight:
(0 ;; subexpression
;; facename:
`(face (:inherit default :foreground "orange" :height 1.5 :weight bold) ;; we use an anonymous face
;; indent:
line-prefix "\t"
wrap-prefix "\t")
)))
nil ;; auto-mode-list
'((lambda ()
"Make `line-prefix' and `wrap-prefix' work in the source fontification buffer."
(setq-local font-lock-extra-managed-props '(line-prefix wrap-prefix))
));; function-list
"Formatting MYPAR blocks.")
(defun org+-hack-org-fontification ()
"Make `wrap-prefix' and `line-prefix' text properties work in Org buffers."
(setq-local font-lock-extra-managed-props (cl-union
'(line-prefix wrap-prefix)
font-lock-extra-managed-props)))
(add-hook 'org-mode-hook #'org+-hack-org-fontification)
(setq org-src-fontify-natively t
org-src-preserve-indentation t)
अंतिम छवि में एक mypar
स्रोत ब्लॉक ऑर्ग में कैसा दिखता है:
पहले ध्यान दें, कि आपका प्रश्न थोड़ा अस्पष्ट है। एचटीएमएल-एक्सपोर्ट या लाटेकएक्स-एक्सपोर्ट में आप पैराग्राफ की इस विशेष प्रारूपण को कहां चाहते हैं? या एमएसीएस में ऑर्ग-बफर के प्रतिनिधित्व में भी?
मैं आपको यहाँ HTML- और LaTeX- निर्यात का उत्तर देता हूँ।
एचटीएमएल-निर्यात के लिए मुख्य विचार यह है कि विशेष ब्लॉकMYPAR
में पाठ की शैली वर्ग निर्धारित करता है ।
आप #+HTML_HEAD
मेटा-लाइनों के भीतर अपनी खुद की शैली को परिभाषित कर सकते हैं ।
LaTeX- निर्यात के लिए मुख्य विचार यह है कि MYPAR
LaTeX वातावरण को निर्धारित करता है जहां विशेष ब्लॉक का पाठ डाला जाता है। आप #+LATEX_HEADER
मेटा-लाइनों के भीतर उस कस्टम वातावरण को परिभाषित कर सकते हैं ।
एक उदाहरण:
Some text before my paragraph. Let this paragraph have some more text. It should have at least two lines.
#+BEGIN_MYPAR
Some text in my paragraph. Let this paragraph have some more text. It should have at least two lines. Even a third line would be nice to have. So we continue this text for some time.
#+END_MYPAR
Some text after my paragraph. Let this paragraph have some more text. It should have at least two lines.
* Style :noexport:
This section is just for definition of HTML and LaTeX formatting.
#+HTML_HEAD: <style>.MYPAR { color:orange; text-indent:8em; font-weight:bold; foint-size:110% }</style>
#+LATEX_HEADER: \usepackage{xcolor}
#+LATEX_HEADER: \newdimen\myparindent\myparindent8em
#+LATEX_HEADER: \newdimen\myparwidth\myparwidth\textwidth\advance\myparwidth-\myparindent
#+LATEX_HEADER: \newenvironment{MYPAR}{\par\noindent\hfill\begin{minipage}[t]{\myparwidth}\bf\color{orange}\fontsize{1em}{1.2em}\selectfont}{\par\xdef\tpd{\the\prevdepth}\end{minipage}\par\prevdepth\tpd}
See https://tex.stackexchange.com/questions/35933/indenting-a-whole-paragraph for using ~minipage~ for indenting a whole paragraph.