2012-03-12 1 views
3

У меня есть документ org-mode, который я хочу экспортировать в формате PDF. Я использую пакет LaTeX списки, чтобы генерировать красиво отформатированных списки кодов, которые выглядят, как это в орг:Предотвращение org-mode от перевода комментария как среды детализации

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

Javadoc комментарий там переводится на орг в среде LaTeX itemize, как это:

\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 или чеканить, так как я уже сделал попытку собрать хороший набор стилей для него.

ответ

6

Что вы в конечном счете хотите, это 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, как

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

Я не совсем уверен, почему, когда вы используете #+begin_latex ... #+end_latex блок в вашем примере, что вещи получают parseed weirdly. В принципе, хотелось бы, чтобы все, что находится в блоке LaTeX, передавалось как есть в файл .tex.

+0

Это замечательно, спасибо! – snim2

+1

Блоки LaTeX не полностью игнорируют синтаксис режима Org. Он действует как своего рода гибридный блок. Я не могу вспомнить точные детали того, что есть и не конвертируется, но я считаю, что смелые/подчеркнутые/курсивы по-прежнему обрабатываются с использованием обычных режимов Org Mode. Казалось бы, списки также (строки, которые экспортируют неправильно, являются всеми действительными элементами списка в Org) –

Смежные вопросы