2009-09-06 16 views
7

Mam mały problem, w którym chciałbym wstawić różnicę svn dokumentu LaTeX do innego dokumentu LaTeX , celem jest pokazanie, co zmieniło się od wersji XXX. Ponieważ jednak diff zawiera dużo polecenia LaTeXa, nie mogę włączyć go bezpośrednio do dokumentu, ponieważ LaTeX będzie je interpretował, a nie tylko "drukuje".Jak wyświetlić kod LaTeX w dokumencie LaTeX?

Dziś mam to w moim 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)) 

A na końcu dokumentu LaTeX mam to:

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

Ale to nie trudne!

Moim następnym pomysłem jest napisanie skryptu perl, który zastępuje wszystkie nieprawidłowe znaki czymś, co może pokazać LaTeX, ale wydaje mi się, że ryzykuję ponowne wymyślenie koła, więc pomyślałem, że mogę zapytać, czy ktoś ma lepszy pomysł ?

Jak dołączyć i pokazać kod LaTeX w dokumencie?

Dzięki Johan


Aktualizacja: Dzięki "nieznany (Google)" za wskazanie verbatim, że zrobił to, co chciałem go.

Aktualizacja: Wygląda na to, że powinienem wypróbować tę listę, o której opowiadał nam las3rjock, ponieważ wygląda to całkiem nieźle.

Aktualizacja: nie udało się uzyskać ofert pracy w moim przypadku, mam jakieś dziwne utf ostrzeżenia o nieprawidłowych znaków. Ale dosłownie działa, więc tym razem skorzystam w ten sposób.

Odpowiedz

7

Istnieje pakiet verbatim, który można dołączyć do \usepackage{verbatim} i uzyskać dostęp przy użyciu nazwy \verbatiminput{ o nazwie pliku }.

+5

Zgoda. Miałem zamiar polecić pakiet list, który oferuje to samo w poleceniu \ lstinputlisting {filename}. W szczególności dla plików generowanych programowo, takich jak diff, jest to sposób, w jaki należy pójść, ponieważ utrzymuje plik TeX zawierający jako ładny, czysty szablon. – Boojum

+3

Tak - lstinputlisting jest prawie zawsze lepszy niż verbatiminput. Unikam dosłowności prawie we wszystkich okazjach. –

12

Po drugie, zalecenie Boojum w komentarzu do innej odpowiedzi, którą można wykorzystać w pakiecie listings. W przypadku listy kodów LaTeX używam ustawień, które znalazłem w pakiecie André Miede classicthesis. Oto przykładowy dokument (quine.tex), a jego produkcja:

\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

To jedno z najlepszych rozwiązań w pakiecie aukcji. Zrobiłem nawet specjalny dodatek, który definiuje kilka ustawień językowych dla php, xml, sql, etc ... – Sorcerer86pt