防止组织模式将评论翻译为逐项环境
Posted
技术标签:
【中文标题】防止组织模式将评论翻译为逐项环境【英文标题】:Preventing org-mode from translating a comment as an itemize environment 【发布时间】:2012-03-12 09:39:01 【问题描述】:我有一个org-mode
文档,我想将其导出为 PDF。我正在使用 LaTeX 列表包生成格式良好的代码列表,在 org 中如下所示:
#+BEGIN_LaTeX
\beginlstlisting[language=Java]
/** Comment comment comment
*
* blah blah blah
*
* @return comment
*/
public void foo()
return;
\endlstlisting
#+END_LaTeX
那里的 Javadoc 注释被 org 翻译为 LaTeX itemize
环境,如下所示:
\beginlstlisting[language=Java]
/** Comment comment comment
\beginitemize
\item
\item blah blah blah
\item
\item @return comment
\enditemize
*/
public void foo()
return;
\endlstlisting
如何防止这种情况发生并保持 Javadoc 与我最初编写的一样?如果我使用#+BEGIN_SRC
而不是#+BEGIN_LaTeX
我得到的是verbatim
环境,但我想坚持使用列表而不是verbatim
或铸造,因为我已经努力整理出一套漂亮的套装它的样式。
【问题讨论】:
【参考方案1】:您最终想要的是literal example。本质上,您希望将代码导出,但要字体化。您需要告诉org-mode
在导出时使用列表(或铸造)。这可以在您的 .emacs 文件中完成:
;; tell org to use listings with colors
(setq org-export-latex-listings t)
(add-to-list 'org-export-latex-packages-alist '("" "listings"))
(add-to-list 'org-export-latex-packages-alist '("" "color"))
此外,您无需在文档的标头参数中指定listings
包。现在,源代码块将在适当的lstlistings
环境中导出:
#+begin_src java
/** Comment comment comment
*
* blah blah blah
* @return comment
*/
public void foo()
return;
#+end_src
导出到 LaTeX 为
\lstsetlanguage=java
\beginlstlisting
/** Comment comment comment
*
* blah blah blah
* @return comment
*/
public void foo()
return;
\endlstlisting
我不太清楚为什么,当您在示例中使用 #+begin_latex
...#+end_latex
块时,事情被奇怪地解析了。原则上,人们希望将 LaTeX 块中的任何内容按原样传递给 .tex 文件。
【讨论】:
LaTeX 块不会完全忽略 Org 模式语法。它充当一种混合块。我不记得转换和未转换的确切细节,但我相信粗体/下划线/斜体仍然使用通常的 Org 模式转义处理。似乎列表也是如此(错误导出的行都是 Org 中的有效列表元素)以上是关于防止组织模式将评论翻译为逐项环境的主要内容,如果未能解决你的问题,请参考以下文章