사용자 정의 글꼴을 사용하여 조직 모드에서 사용자 정의 단락 유형을 정의하는 방법은 무엇입니까?
사용자 정의 글꼴을 사용하여 조직 모드에서 사용자 정의 단락 블록을 정의하려면 어떻게해야합니까?
#+BEGIN_MYPAR
Some text
#+END_MYPAR
그런 다음 예를 들어이 블록이 나머지 텍스트보다 한 포인트 더 크고 굵은 글꼴로 표시되고 하나의 탭으로 들여 쓰기를 원합니다.
어떻게 할 수 있습니까?
편집 :
문제는 내보내기가 아닌 emacs 버퍼에 사물이 어떻게 표시되는지에 관한 것입니다 (이는 후속 질문 일 수 있음).
답변
특수 블록 대신 소스 블록을 사용하면 목표에 매우 간단하게 도달 할 수 있습니다. 또는 mypar-mode
도움을 받아 자신의 주 모드를 정의 하고 원하는대로 해당 주 모드에 대한 글꼴을 설정합니다.define-generic-mode
define-derived-mode
Org 버퍼 의 소스 블록이 글꼴 화 된 소스 버퍼와 최대한 비슷하게 보이 도록 org-src-fontify-natively
및 org-src-preserve-indentation
둘 다 t로 설정되어 있는지 확인합니다 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
소스 블록이 Org에서 어떻게 보이는지 이미지 :
먼저 귀하의 질문이 약간 모호하다는 점에 유의하십시오. HTML 내보내기 또는 LaTeX 내보내기에서이 특수한 단락 서식을 원하는 위치는 어디입니까? 아니면 Emacs의 Org-buffer 표현에서도?
여기서 HTML 및 LaTeX 내보내기에 대한 답변을 제공합니다.
HTML 내보내기의 주요 아이디어 MYPAR
는 특수 블록 에있는 텍스트의 스타일 클래스 를 결정하는 것입니다 .
#+HTML_HEAD
메타 라인 내에서 자신 만의 스타일을 정의 할 수 있습니다 .
LaTeX-export의 주요 아이디어 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.