3

我有一个org-mode要导出为 PDF 的文档。我正在使用 LaTeX 列表包来生成格式良好的代码列表,在 org 中看起来像这样:

#+BEGIN_LaTeX
\begin{lstlisting}[language=Java]
    /** Comment comment comment
     * 
     * blah blah blah
     * 
     * @return comment
     */
    public void foo() {
        return;
    }
\end{lstlisting}
#+END_LaTeX

org 正在将 Javadoc 注释翻译为 LaTeXitemize环境,如下所示:

\begin{lstlisting}[language=Java]
    /** Comment comment comment
\begin{itemize}
\item 
\item blah blah blah
\item 
\item @return comment
\end{itemize}
     */
    public void foo() {
        return;
    }
\end{lstlisting}

我怎样才能防止这种情况发生并保留我最初编写的 Javadoc?如果我使用#+BEGIN_SRC而不是#+BEGIN_LaTeX我得到的是一个verbatim环境,但我想坚持使用列表而不是verbatim或铸造,因为我已经努力为它组合一组漂亮的样式。

4

1 回答 1

6

您最终想要的是一个文字示例。本质上,您希望将代码导出,但要字体化。您需要告知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 为

\lstset{language=java}
\begin{lstlisting}
/** Comment comment comment
 *
 * blah blah blah
 * @return comment
 */
public void foo() {
    return;
}
\end{lstlisting}

我不太确定为什么,当您在示例中使用#+begin_latex...#+end_latex块时,事情会被奇怪地解析。原则上,人们希望将 LaTeX 块中的任何内容按原样传递给.tex文件。

于 2012-03-13T00:30:27.800 回答