จัดรูปแบบกระดาษ HTML ด้วยโหมดองค์กร


11

โหมดเริ่มต้นขององค์กรระหว่างการส่งออก HTML คือการวางผู้เขียนใน postamble ที่ด้านล่างของหน้า

แต่ฉันต้องการส่งออกกระดาษเช่นเอกสารกับผู้แต่งระหว่างชื่อเรื่องและนามธรรม เป็นไปได้หรือไม่ที่จะวางผู้เขียนไว้หลังชื่อ?

และเป็นไปได้ไหมที่จะติดป้ายกำกับนามธรรมเป็นนามธรรม? ฉันใช้ตัวคั่น

#+BEGIN_abstract
...
#+END_abstract

เพื่อทำเครื่องหมายข้อความว่าเป็นนามธรรม แต่จะแสดงเป็นย่อหน้าปกติ (ไม่มี blockquote เหมือนเยื้อง) เป็นไปได้ไหมที่จะได้รับการเยื้องที่เหมาะสมสำหรับนามธรรมและป้ายกำกับที่แปลเป็นภาษาท้องถิ่น?


2
สำหรับข้อกำหนดนามธรรมให้ใช้ CSS จะถูกห่อเป็น... <div class="abstract"><p>...</p></div>สำหรับการมี LaTeX เช่นชื่อบางทีคุณควรกรอกรายงานบั๊ก สำหรับตอนนี้ให้ใช้แมโคร{{{AUTHOR}}}และตัวอย่าง@@html:whatever@@เพื่อสร้างสิ่งที่คุณต้องการ
rasmus

คำตอบ:


10

อาจเป็นเช่นนี้ (ทดสอบด้วย LaTeX และ HTML)

#+TITLE: An Orged Paper
#+AUTHOR: Rasmus
#+DATE: A Dark Day for Science 

#+RESULTS: html-header

#+begin_abstract
#+begin_center
{{{html-only(*Abstract*)}}}
#+end_center
my long abstract that is longer than one line. my long abstract that is longer than one line.
#+end_abstract
#+toc: headlines
* Introduction
Please read my paper!
* Data
~{0,1}~
* Conclusion
Something deep and profound

{{{html-only(------------)}}}
* styles                                                           :noexport:
#+HTML_HEAD_EXTRA: <style type="text/css">
#+HTML_HEAD_EXTRA: <!--
#+HTML_HEAD_EXTRA:   .header_title {font-size: 2em; font-weight: bold;}
#+HTML_HEAD_EXTRA:   .header_author {font-size: 1.5em; font-weight: bold;text-align:center;}
#+HTML_HEAD_EXTRA:   .header_date {text-align:center;}
#+HTML_HEAD_EXTRA:   .header_date .timestamp {font-size:1em; color:#000000;}
#+HTML_HEAD_EXTRA:   .abstract {max-width: 30em; margin-left: auto; margin-right: auto;}
#+HTML_HEAD_EXTRA: -->
#+HTML_HEAD_EXTRA: </style>

#+OPTIONS: toc:nil

#+MACRO: html-only (eval (if (org-export-derived-backend-p org-export-current-backend 'html) "$1" ""))

#+NAME: html-header
#+BEGIN_SRC emacs-lisp :results raw :exports (if (org-export-derived-backend-p org-export-current-backend 'html) "results" "none")
  "#+begin_header
  ,#+begin_header_author
  {{{AUTHOR}}}
  ,#+end_header_author
  ,#+begin_header_date
  {{{DATE}}}
  ,#+end_header_date
  ,#+end_header
"
#+END_SRC

หมายเหตุอาจจะมีการสร้างทางhtml-header org-html-preambleโปรดทราบด้วยว่าorg 8.3 org-latex-title-commandสามารถใช้จากเพื่อปรับแต่งชื่อเป็นสตริงรูปแบบ


2

ดูซอร์สโค้ดดูเหมือนว่าไม่มีตัวเลือกในการทำเช่นนี้

ฉันไม่แน่ใจว่าสิ่งที่คุณต้องการจริงๆเพียงแค่ให้สองวิธีที่เป็นไปได้:

  1. เพียงเพิ่ม#+BEGIN_HTML ... #+END_HTMLบล็อกเพื่อเขียนสิ่งที่คุณต้องการ (เนื้อหาที่เขียนในนั้นจะถือว่าเป็น HTML ทั้งหมด) แต่คุณอาจต้องเพิ่ม#+OPTIONS: toc: nilเพื่อปิดการใช้งาน TOC หรือผู้เขียนจะอยู่ภายใต้ TOC

  2. กำหนดฟังก์ชั่นการส่งออกอีกครั้งและทำสิ่งที่คุณต้องการ (แจ้งให้ทราบล่วงหน้าบรรทัด 50 ~ 52) เพียงวางรหัสต่อไปนี้(require 'ox-html)ในไฟล์ปรับแต่งของคุณ:

      (defun org-html-template (contents info)
        "Return complete document string after HTML conversion.
      CONTENTS is the transcoded contents string.  INFO is a plist
      holding export options."
        (concat
         (when (and (not (org-html-html5-p info)) (org-html-xhtml-p info))
           (let ((decl (or (and (stringp org-html-xml-declaration)
                  org-html-xml-declaration)
                 (cdr (assoc (plist-get info :html-extension)
                     org-html-xml-declaration))
                 (cdr (assoc "html" org-html-xml-declaration))
    
                 "")))
             (when (not (or (eq nil decl) (string= "" decl)))
         (format "%s\n"
             (format decl
                 (or (and org-html-coding-system
                      (fboundp 'coding-system-get)
                      (coding-system-get org-html-coding-system 'mime-charset))
                     "iso-8859-1"))))))
         (org-html-doctype info)
         "\n"
         (concat "<html"
           (when (org-html-xhtml-p info)
             (format
              " xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"%s\" xml:lang=\"%s\""
              (plist-get info :language) (plist-get info :language)))
           ">\n")
         "<head>\n"
         (org-html--build-meta-info info)
         (org-html--build-head info)
         (org-html--build-mathjax-config info)
         "</head>\n"
         "<body>\n"
         (let ((link-up (org-trim (plist-get info :html-link-up)))
         (link-home (org-trim (plist-get info :html-link-home))))
           (unless (and (string= link-up "") (string= link-home ""))
             (format org-html-home/up-format
               (or link-up link-home)
               (or link-home link-up))))
         ;; Preamble.
         (org-html--build-pre/postamble 'preamble info)
         ;; Document contents.
         (format "<%s id=\"%s\">\n"
           (nth 1 (assq 'content org-html-divs))
           (nth 2 (assq 'content org-html-divs)))
         ;; Document title.
         (let ((title (plist-get info :title)))
           (format "<h1 class=\"title\">%s</h1>\n" (org-export-data (or title "") info)))
         ;; Author
         (let ((author (plist-get info :author)))
           (format "<h2 class=\"author\">%s</h2>\n" (org-export-data (or author "") info)))
         contents
         (format "</%s>\n"
           (nth 1 (assq 'content org-html-divs)))
         ;; Postamble.
         (org-html--build-pre/postamble 'postamble info)
         ;; Closing document.
         "</body>\n</html>"))        
    

3
นี่เป็นวิธีที่ผิดอย่างนี้ !! โดยเฉพาะอย่างยิ่งที่คุณต้องทำให้ได้มาได้รับการสนับสนุนให้ดูและเพิ่มแม่แบบใหม่ให้กับorg-export-define-derived-backend :translate-alistสำหรับตัวอย่างที่เป็นรูปธรรมตรวจสอบox-beamer.el, และเช่นox-koma-script.el ox-s5.el
rasmus

1

ปัญหาที่ยากที่สุดที่ฉันพบคือการจัดแต่งทรงผมตามเงื่อนไขของส่วนต่างๆและการกำหนดหมายเลขตามเงื่อนไขของส่วนต่างๆ นี่เป็นวิธีแก้ปัญหาสำหรับปัญหาทั้งสองนี้

นี่คือกระดาษของฉัน:

#+TITLE: Complex Tracking of Awesome Things
#+AUTHOR: Bastibe
#+INCLUDE: style.org

* Abstract
:PROPERTIES:
:NUMBERS: no
:HTML_CONTAINER_CLASS: abstract
:END:

Lorem ipsum dolor sit amet...

* Introduction
:PROPERTIES:
:NUMBERS: no
:END:

* Methodology

* Results

* Conclusion

* Acknowledgements
:PROPERTIES:
:NUMBERS:  no
:END:

ขั้นแรกให้รวมไฟล์ org ด้วยตัวเลือกเพิ่มเติมบางอย่าง ไฟล์นี้เรียกว่าstyle.orgด้านบนตั้งค่าการส่งออก HTML เพื่อโหลดสไตล์ชีตที่กำหนดเองและตั้งค่าตัวเลือก LaTeX สองสามตัว หากคุณไม่ได้ส่งออกไปยัง LaTeX คุณจะไม่ต้องการสิ่งเหล่านั้น

#+LANGUAGE: en
#+OPTIONS: tags:nil html-postamble:nil # toc:nil
#+STARTUP: nofold hideblocks
#+BIND: org-latex-title-command ""

#+HTML_MATHJAX: path:"MathJax/MathJax.js"
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style.css" />

#+LATEX_CLASS: article
#+LATEX_CLASS_OPTIONS: [a4paper, 12pt]
#+LATEX_HEADER: \usepackage{setspace}
#+LATEX_HEADER: \onehalfspacing
#+LATEX_HEADER: \usepackage{fontspec}
#+LATEX_HEADER: \setmainfont{Cambria}
#+LATEX_HEADER: \setmonofont{PragmataPro}
#+LATEX_HEADER: \usepackage{polyglossia}
#+LATEX_HEADER: \setdefaultlanguage{english}
#+LATEX_HEADER: \usepackage[a4paper, scale=0.8]{geometry}
#+LATEX_HEADER: \usepackage{amsmath}
#+LATEX_HEADER: \usepackage{units}
#+LATEX_HEADER: \usepackage{titling}
#+LATEX_HEADER: \usepackage{listings}
#+LATEX_HEADER: \lstset{basicstyle=\ttfamily\footnotesize,showstringspaces=false}
#+LATEX_HEADER: \usepackage[hang]{caption}

หากต้องการแสดงผลเป็น HTML เหมือนกระดาษ CSS เล็ก ๆ น้อย ๆ ก็เพียงพอแล้ว (บันทึกในstyle.css:

#content {
    max-width: 80ex;
    position: relative;
    margin: 5px auto;
    font-family: Cambria;
    text-align: justify;
    -moz-hyphens: auto;
}

.abstract {
    max-width: 65ex;
    margin: 5px auto;
    margin-top: 4em;
    margin-bottom: 4em;
    content: none;
}

p {
    text-indent: 5ex;
    margin-bottom: 0;
    margin-top: 0;
}

อย่างไรก็ตามหมายเลขส่วนจะผิด โหมดองค์กรสามารถกำหนดหมายเลขส่วนทั้งหมดหรือไม่เลือกก็ได้ โดยทั่วไปแล้วเอกสารจะต้องการตัวเลขในส่วนของเนื้อความ แต่ไม่ใช่บทคัดย่อและสรุป ชิ้นส่วนของรหัสต่อไปนี้จะทำให้ Org ใส่ตัวเลขไว้หน้าส่วนปกติ แต่จะระงับตัวเลขหาก:NUMBERS: noตั้งค่าคุณสมบัติไว้:

(defun headline-numbering-filter (data backend info)
  "No numbering in headlines that have a property :numbers: no"
  (let* ((beg (next-property-change 0 data))
         (headline (if beg (get-text-property beg :parent data))))
    (if (string= (org-element-property :NUMBERS headline) "no")
        (cond ((eq backend 'latex)
               (replace-regexp-in-string
                "\\(part\\|chapter\\|\\(?:sub\\)*section\\|\\(?:sub\\)?paragraph\\)"
                "\\1*" data nil nil 1))
              ((eq backend 'html)
               (replace-regexp-in-string
                "\\(<h[1-6]\\)\\([^>]*>\\)"
                "\\1 class=\"nonumber\"\\2" data nil nil)))
      data)))

(setq org-export-filter-headline-functions '(headline-numbering-filter))

วิธีนี้ใช้งานได้ดีสำหรับการส่งออก LaTeX แต่ไม่สามารถใช้ในการส่งออก HTML ด้วย CSS ที่ทันสมัยเบราว์เซอร์สามารถกำหนดหมายเลขให้คุณได้ (ต่อท้ายstyle.css):

/* do not show section numbers */
span.section-number-2 { display: none; }
span.section-number-3 { display: none; }
span.section-number-4 { display: none; }
span.section-number-5 { display: none; }
span.section-number-6 { display: none; }

/* use LaTeX-style names for the counters */
h1 { counter-reset: section; }
h2 { counter-reset: subsection; }
h3 { counter-reset: subsubsection; }
h4 { counter-reset: paragraph; }
h5 { counter-reset: subparagraph; }

.nonumber::before { content: none; }

h2::before {
    content: counter(section) " ";
    counter-increment: section;
}

h3::before {
    content: counter(section) "." counter(subsection) " ";
    counter-increment: subsection;
}

h4::before {
    content: counter(section) "." counter(subsection) "." counter(subsubsection) " ";
    counter-increment: subsubsection;
}

h5::before {
    content: counter(section) "." counter(subsection) "." counter(subsubsection) "." counter(paragraph) " ";
    counter-increment: paragraph;
}

h6::before {
    content: counter(section) "." counter(subsection) "." counter(subsubsection) "." counter(paragraph) "." counter(subparagraph) " ";
    counter-increment: subparagraph;
}

ด้วยวิธีนี้คุณสามารถส่งออกกระดาษของคุณไปยังทั้ง LaTeX และ HTML


" โหมดองค์กรสามารถเลือกหมายเลขได้ทุกส่วนหรือไม่มีก็ได้" อืมวิธีการเกี่ยวกับการส่งทรัพย์สินUNNUMBERED: tไปยังพาดหัว? จาก ORG-NEWS: พาดหัวข่าวซึ่งคุณสมบัติUNNUMBEREDไม่เป็นศูนย์จะถูกส่งออกโดยไม่มีหมายเลขส่วนโดยไม่คำนึงถึงระดับของพวกเขา เด็ก ๆ เป็นผู้สืบทอดทรัพย์สิน
rasmus

@rasmus ที่ยอดเยี่ยม! อย่างไรก็ตามเท่าที่ฉันสามารถบอกได้นี่เป็นเพียงการแนะนำในโหมด org-8.3 ซึ่งยังไม่เปิดตัว
bastibe

มันนำมาใช้ในระดับปริญญาโทและทำงานในแบ็กเอนด์ทั้งหมด องค์กร 8.3 อยู่ใกล้แค่เอื้อม ที่ยังไม่ได้เปิดตัวหมายความว่าเป็นเวลาที่เหมาะสมในการทดสอบและโพสต์รายงานข้อผิดพลาด (ตามที่จำเป็น)!
rasmus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.