2009-09-06 2 views
7

У меня есть небольшая проблема, когда я хотел бы вставить SVN diff в документ LaTeX в еще один документ LaTeX, цель которого - показать, что изменилось с момента пересмотра XXX. Однако, поскольку diff содержит много команд LaTeX, я не могу включить его прямо в документ, так как LaTeX будет их интерпретировать, а не просто «печатать» их.Как показать LaTeX-код в документе LaTeX?

Сегодня у меня есть это в моем Makefile

DIFF_INFO=diff.info.tex 
DIFF_REV=167 
diffinfo: 
    $(shell echo "\n" > $(DIFF_INFO)) 
    $(shell echo "\\section{diff $(DIFF_REV)} \n" >> $(DIFF_INFO)) 
    $(shell echo \\\\begin{verbatim} >> $(DIFF_INFO)) 
    $(shell svn diff --revision $(DIFF_REV) $(N).tex >> $(DIFF_INFO)) 
    $(shell echo \\\\end{verbatim} >> $(DIFF_INFO)) 

И в конце LaTeX документа у меня есть это:

\IfFileExists{diff.info.tex} 
{ 
    \newpage 
    \input{diff.info.tex} 
} 

Но это не удается трудно!

Моя следующая идея - написать скрипт perl, который заменяет все недопустимые символы тем, что может показать LaTeX, но похоже, что я рискую изобретать колесо, поэтому я решил, что могу спросить, есть ли у кого-то лучшая идея ?

Как включить и показать код LaTeX в документе?

Благодаря Йохан


Update: Спасибо "неизвестный (Google)" за указание дословно, он сделал то, что я хотел.

Update: Я также выглядит как я должен попробовать, что результаты, которые las3rjock рассказывали нам о том, так это выглядит отчасти хорошо.

Обновление: Не удалось получить списки для работы в моем случае, я получаю некоторые странные предупреждения utf о недопустимых символах. Но дословно работает, поэтому я буду использовать этот путь на этот раз.

ответ

7

Там»а verbatim пакет, который может включать в себя с \usepackage{verbatim} и доступ с использованием \verbatiminput{ файла }.

+5

Согласовано. Я собирался рекомендовать пакет из списка, который предлагает то же самое в команде \ lstinputlisting {filename}. В частности, для программно сгенерированных файлов, таких как diff, так происходит путь, поскольку он сохраняет содержащийся в TeX файл как хороший, чистый шаблон. – Boojum

+3

Да - lstinputlisting почти всегда лучше, чем verbatiminput. Я избегаю дословно в почти всех случаях. –

12

I вторая рекомендация Boojum в комментарии к другому ответу, что вы используете пакет listings. Для списков кодов LaTeX я использую настройки, которые я нашел в пакете classicthesis André Miede. Ниже приведен пример документ (quine.tex) и его выход:

\documentclass[12pt,letterpaper]{article} 
\usepackage{listings} 
\usepackage[usenames,dvipsnames]{color} 

% listings settings from classicthesis package by 
% Andr\'{e} Miede 
\lstset{language=[LaTeX]Tex,%C++, 
    keywordstyle=\color{RoyalBlue},%\bfseries, 
    basicstyle=\small\ttfamily, 
    %identifierstyle=\color{NavyBlue}, 
    commentstyle=\color{Green}\ttfamily, 
    stringstyle=\rmfamily, 
    numbers=none,%left,% 
    numberstyle=\scriptsize,%\tiny 
    stepnumber=5, 
    numbersep=8pt, 
    showstringspaces=false, 
    breaklines=true, 
    frameround=ftff, 
    frame=single 
    %frame=L 
} 

\begin{document} 
\lstinputlisting{quine.tex} 
\end{document} 

LaTeX document displaying its own source code
(click to enlarge)

+0

Это одно из лучших решений для пакетов. Я даже включил специальный параметр, который определяет несколько языковых настроек для php, xml, sql и т. Д. ... – Sorcerer86pt

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