ओआरजी-मोड के साथ एक HTML पेपर प्रारूपित करें


11

HTML एक्सपोर्ट के दौरान ऑर्ग-मोड का डिफॉल्ट लेखक को पेज के निचले हिस्से में पोस्टमैबल में डालना है।

लेकिन मैं शीर्षक और अमूर्त के बीच लेखक के साथ दस्तावेज़ की तरह एक पेपर निर्यात करना चाहूंगा। क्या शीर्षक के बाद लेखक को रखना किसी तरह संभव है?

और क्या अमूर्त को अमूर्त के रूप में लेबल करना संभव है? मैंने सीमांकक का उपयोग किया है

#+BEGIN_abstract
...
#+END_abstract

पाठ को अमूर्त के रूप में चिह्नित करने के लिए लेकिन इसे एक सामान्य अनुच्छेद (इंडेंट की तरह कोई अवरोध नहीं) के रूप में प्रस्तुत किया गया है। क्या अमूर्त और एक स्थानीय लेबल के लिए सही इंडेंट प्राप्त करना संभव है?


2
अमूर्त आवश्यकताओं के लिए सीएसएस का उपयोग करें। ...के रूप में लपेटा जाएगा <div class="abstract"><p>...</p></div>। शीर्षक जैसे LaTeX होने के लिए शायद आपको बग रिपोर्ट भरनी चाहिए। अभी के लिए मैक्रो {{{AUTHOR}}}और स्निपेट्स @@html:whatever@@का उपयोग करें जो आप चाहते हैं।
रासुस

जवाबों:


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: nilTOC को निष्क्रिय करने की आवश्यकता हो सकती है या लेखक को 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
रासमस

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:

सबसे पहले, इसमें कुछ अतिरिक्त विकल्पों के साथ एक ऑर्ग फाइल शामिल है। यह फ़ाइल, जिसे 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 जैसे पेपर को रेंडर करने के लिए, थोड़ा सीएसएस पर्याप्त है (इसमें सहेजा गया है 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 निर्यात में नहीं। आधुनिक सीएसएस के साथ, ब्राउज़र आपके लिए नंबरिंग कर सकते हैं (संलग्न 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 यह कमाल है! हालांकि, जहां तक ​​मैं बता सकता हूं, यह केवल ओआरजी-मोड 8.3 में पेश किया गया था, जो अभी तक जारी नहीं किया गया है।
बत्तीब

यह मास्टर में लागू किया गया है और सभी बैकएंड पर काम करता है। Org 8.3 दरवाजे पर है। यह जारी नहीं किया गया है इसका मतलब है कि यह परीक्षण करने और बग रिपोर्ट (आवश्यक के रूप में) पोस्ट करने का सही समय है!
रासमस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.