Kuruluş modunda özel yazı tipi belirleme ile özel paragraf türleri nasıl tanımlanır?
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
Ö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-mode
yardımıyla define-generic-mode
veya define-derived-mode
o 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-natively
ve org-src-preserve-indentation
her 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 mypar
kaynak bloğun Org'da nasıl göründüğü bir görüntü :

İ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_HEAD
Meta 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_HEADER
meta 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.