防止组织模式将评论翻译为逐项环境

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 中的有效列表元素)

以上是关于防止组织模式将评论翻译为逐项环境的主要内容,如果未能解决你的问题,请参考以下文章

防止存储桶公开

防止网格被渲染

如何防止AD域环境遭受恶意攻击?

防止 Intellij IDEA 缩进我对 else 语句的评论

防止 Google Play 上的虚假评论 [关闭]

如何防止自动生成评论只是为了快速修复 serialVersionUID 警告?