Comment définir des types de paragraphes personnalisés en mode organisation avec une police personnalisée?
Comment puis-je définir des blocs de paragraphes personnalisés en mode organisation avec une police personnalisée, par exemple quelque chose comme
#+BEGIN_MYPAR
Some text
#+END_MYPAR
Ensuite, je veux par exemple que ce bloc soit affiché en couleur de police orange, un point plus grand que le reste du texte, en gras et en retrait d'un onglet.
Comment puis-je faire ceci?
Modifier :
La question est de savoir comment les choses sont affichées dans le tampon emacs, pas dans les exportations (bien que cela puisse avoir été une question de suivi).
Réponses
Vous atteignez votre objectif assez simplement si vous utilisez des blocs source au lieu de blocs spéciaux. Définissez votre propre mode majeur, par exemple mypar-mode
à l'aide de define-generic-mode
ou define-derived-mode
et configurez la police pour ce mode majeur comme vous le souhaitez.
Assurez-vous que org-src-fontify-natively
et org-src-preserve-indentation
sont tous les deux définis sur t de telle sorte que les mypar
blocs source dans le tampon d'Org ressemblent autant que possible aux tampons source fontifiés.
Si vous avez htmlizeinstallé, vous obtenez gratuitement la plupart du formatage souhaité dans l'exportation HTML.
Un exemple de code que j'ai testé avec Emacs 27.1 et 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)
Enfin une image à quoi mypar
ressemble un bloc source dans Org:
Notez d'abord que votre question est un peu vague. Où voulez-vous avoir ce formatage spécial du paragraphe - en exportation HTML ou exportation LaTeX? Ou même dans la représentation de l'Org-buffer dans Emacs?
Je vous donne ici une réponse pour l'exportation HTML et LaTeX.
L'idée principale de l'exportation HTML est de MYPAR
déterminer la classe de style du texte dans le bloc spécial .
Vous pouvez définir votre propre style dans les #+HTML_HEAD
méta-lignes.
L'idée principale de l'exportation LaTeX est de MYPAR
déterminer l'environnement LaTeX dans lequel le texte du bloc spécial est placé. Vous pouvez définir cet environnement personnalisé dans les #+LATEX_HEADER
méta-lignes.
Un exemple:
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.