Kuruluş modunda özel yazı tipi belirleme ile özel paragraf türleri nasıl tanımlanır?

Aug 17 2020

Kuruluş modunda özel bir yazı tipiyle özel paragraf bloklarını nasıl tanımlayabilirim, örneğin

#+BEGIN_MYPAR
Some text 
#+END_MYPAR

Sonra, örneğin bu bloğun turuncu yazı tipi renginde, metnin geri kalanından bir nokta daha büyük, kalın yüzlü ve bir sekme ile girintili olarak görüntülenmesini istiyorum.

Bunu nasıl yapabilirim?

Düzenle :

Soru, emacs arabelleğinde şeylerin nasıl görüntülendiğiyle ilgilidir, ihracatta değil (bu bir takip sorusu olsa da).

Yanıtlar

2 Tobias Aug 27 2020 at 21:29

Özel bloklar yerine kaynak bloklar kullanırsanız hedefinize oldukça kolay ulaşırsınız. Kendi ana modunuzu tanımlayın, diyelim ki mypar-modeyardımıyla define-generic-modeveya define-derived-modeo ana mod için yazı tipini istediğiniz gibi ayarlayın.

Kuruluş arabelleğindeki kaynak bloklarının mümkün olduğunca yazı tipli kaynak arabellekleri gibi görünmesi için , org-src-fontify-nativelyve org-src-preserve-indentationher ikisinin t olarak ayarlandığından emin olun mypar.

Eğer varsa htmlizeyüklü sen çoğu ücretsiz HTML ihracat biçimlendirme istedi olsun.

Emacs 27.1 ve Org 9.3.7 ile test ettiğim bir kod örneği:

(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)

Sonunda bir myparkaynak bloğun Org'da nasıl göründüğü bir görüntü :

1 Tobias Aug 23 2020 at 23:09

İlk olarak, sorunuzun biraz belirsiz olduğunu unutmayın. Paragrafın bu özel biçimlendirmesini nerede elde etmek istiyorsunuz - HTML dışa aktarmada mı yoksa LaTeX dışa aktarmada mı? Ya da Org-tamponunun Emacs'deki temsilinde mi?

Size burada HTML ve LaTeX dışa aktarımı için bir cevap veriyorum.

HTML dışa aktarmanın ana fikri MYPAR, özel bloktaki metnin stil sınıfını belirlemektir .

#+HTML_HEADMeta satırlar içinde kendi stilinizi tanımlayabilirsiniz .

LaTeX dışa aktarımının ana fikri MYPAR, özel bloğun metninin yerleştirildiği LaTeX ortamını belirlemektir . Bu özel ortamı #+LATEX_HEADERmeta satırlar içinde tanımlayabilirsiniz .

Bir örnek:

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.