首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动组织-> Rnw -> tex -> pdf

自动组织-> Rnw -> tex -> pdf
EN

Stack Overflow用户
提问于 2014-08-14 19:00:49
回答 1查看 635关注 0票数 1

我正试图通过编织机自动化一些组织模式文件的处理,最后生成一个pdf。为此,我使用了来自https://github.com/chasberry/orgmode-accessories的ox-ravel.el。基本上,我想要在组织模式导出中的另一个条目,它允许我运行pdf-分派的C C-e l:

代码语言:javascript
复制
(org-export-define-derived-backend 'latex-noweb 'latex
  :translate-alist '((src-block . org-ravel-src-block)
                    (inline-src-block . org-ravel-inline-src-block))
  :menu-entry
  '(?l 1
      ((?q "As KnitR PDF" org-ravel-latex-noweb-pdf-dispatch))))

这似乎删除了ox中类似的派生后端的当前条目:

代码语言:javascript
复制
(org-export-define-derived-backend 'latex-noweb 'latex
  :translate-alist '((src-block . org-ravel-src-block)
                    (inline-src-block . org-ravel-inline-src-block))
  :menu-entry
  '(?l 1
      ((?r "As Rnw File" org-ravel-latex-noweb-dispatch))))

任何提示,使两个条目出现,将不胜感激。现在是更棘手的部分。我想要org-ravel-胶乳-noweb-pdf-第一次导出到Rnw文件,如下所做的:

代码语言:javascript
复制
 (defun org-ravel-latex-noweb-dispatch 
  (&optional async subtreep visible-only body-only ext-plist)
"Execute menu selection. See org-export.el for meaning of ASYNC,
      SUBTREEP, VISIBLE-ONLY and BODY-ONLY."
(interactive)
(if async
    (message "No async allowed.")
  (let
      ((outfile  (org-export-output-file-name ".Rnw" subtreep)))
       (org-export-to-file 'latex-noweb 
                           outfile async subtreep visible-only 
                           body-only ext-plist))))

导出.Rnw文件之后,我需要运行ess-swv来导出.tex文件。然后,我想运行org-胶乳编译,以获得一个最终的pdf。下面是组织乳液导出到-pdf的一部分,可能与此相关:

代码语言:javascript
复制
(defun org-latex-export-to-pdf
  (&optional async subtreep visible-only body-only ext-plist)
  "Export current buffer to LaTeX then process through to PDF."
  (interactive)
  (let ((outfile (org-export-output-file-name ".tex" subtreep)))
    (org-export-to-file 'latex outfile
      async subtreep visible-only body-only ext-plist
      (lambda (file) (org-latex-compile file)))))

任何帮助结合上述想法,使C-c C-e l生产所需的pdf将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-16 13:48:22

org-export-define-derived-backend的第一个参数是新后端的名称。由于您有两个同名为'latex-noweb的定义,原来的定义会被覆盖。

因此,将后端重命名为,比方说,乳胶针织品,并创建一个函数org-ravel-latex-noweb-pdf-dispatch,复制org-ravel-latex-noweb-dispatch的定义并修改。关键是org-export-to-file,它可以在处理后再使用一个参数,您可以使用它来编织.Rnw文件并编译生成的tex文件:

代码语言:javascript
复制
(defun org-ravel-latex-noweb-pdf-dispatch 
    (&optional async subtreep visible-only body-only ext-plist)
  "Process org file through knitr. See org-export.el for meaning of 
SUBTREEP, VISIBLE-ONLY and BODY-ONLY."
  (interactive)
  (if async
      (message "No async allowed.")
    (let ((outfile  (org-export-output-file-name ".Rnw" subtreep)))
      (org-export-to-file
          'latex-noweb 
          outfile async subtreep visible-only 
          body-only ext-plist
          (lambda (file)
            << run `ess-swv-weave' on file >>
            (let ((texfile (concat
                            (file-name-sans-extension file)
                            ".tex")))
              (org-latex-compile texfile)))))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25315704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档