2010-04-22 37 views
5

Tôi đang sử dụng Latex để viết một chương trình liệt kê tất cả mã của tôi và tôi sau này:Latex + Mã Nguồn nhập

http://texblog.wordpress.com/2008/04/02/include-source-code-in-latex-with-listings/

Nó hoạt động, nhưng mã chạy của tôi về một bên của trang. Làm thế nào tôi có thể sửa lỗi này? Câu hỏi bổ sung: Làm thế nào tôi có thể làm nổi bật cú pháp? Tôi đã cài đặt ngôn ngữ Java.

Trả lời

9

Hãy thử một cái gì đó như thế này:

\documentclass{article} 

\usepackage{listings} 
\usepackage{color} 
\usepackage{textcomp} 
\definecolor{listinggray}{gray}{0.9} 
\definecolor{lbcolor}{rgb}{0.9,0.9,0.9} 
\lstset{ 
    language=c, 
    basicstyle=\scriptsize, 
    upquote=true, 
    aboveskip={1.5\baselineskip}, 
    columns=fullflexible, 
    showstringspaces=false, 
    extendedchars=true, 
    breaklines=true, 
    showtabs=false, 
    showspaces=false, 
    showstringspaces=false, 
    identifierstyle=\ttfamily, 
    keywordstyle=\color[rgb]{0,0,1}, 
    commentstyle=\color[rgb]{0.133,0.545,0.133}, 
    stringstyle=\color[rgb]{0.627,0.126,0.941}, 
} 

\begin{document} 

\begin{lstlisting} 

#include <stdio.h> 

int main() 
{ 
    // A line comment 
    printf("A really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, REALLY long line. && & \n"); 
    return 0; 
} 

\end{lstlisting} 

\end{document} 

trong đó sản xuất:

alt text http://img260.imageshack.us/img260/1608/codes.png

+0

làm cách nào để lấy latex thoát ra và \ n tự động? – KP65

+0

ok cảm ơn, chỉnh sửa op – KP65

+1

Một lưu ý thẩm mỹ: cột = cố định thường cho kết quả xấu (như ở đây, các chữ cái được đặt cách nhau quá nhiều). Tôi thích các cột = fullflexible, ngay cả với một phông chữ cố định chiều rộng, nó cho một cái nhìn tự nhiên hơn nhiều để mã. –

2

Bạn có xem xét

\lstset{...} 
breaklines=true -> sets automatic line breaking 
breakatwhitespace=false -> automatic breaks happen at whitespace 

?

1

Sử dụng breaklines=true e. G .:

\lstnewenvironment{bash}
{\lstset{language=bash,breaklines=true,frame=trBL}}
{}

2

Bạn muốn bật dòng phá vỡ với

\lstset{breaklines=true} 

trong các tùy chọn lệnh. Bây giờ bạn có thể không thích sự lựa chọn của nó nhưng đó là một câu hỏi khác.

2

Thay vì bao gồm cả nguồn trực tiếp, bao gồm nó từ một tập tin:

\lstinputlisting{/Volumes/docs/p2k_files_in_qt.sh} 

Bạn' sẽ tiết kiệm rất nhiều công việc làm theo cách đó. Ngoài ra, nếu bạn phải đưa nguồn vào tệp, có lgrind.

\lstset{ % 
language=C,        % choose the language of the code 
basicstyle=\footnotesize,  % the size of the fonts that are used for the code 
numbers=left,     % where to put the line-numbers 
numberstyle=\footnotesize,  % the size of the fonts that are used for the line-numbers 
stepnumber=1,     % the step between two line-numbers. If it's 1 each line will be numbered 
numbersep=5pt,     % how far the line-numbers are from the code 
%backgroundcolor=\color{Blue}, % choose the background color. You must add \usepackage{color} 
showspaces=false,    % show spaces adding particular underscores 
showstringspaces=false,   % underline spaces within strings 
showtabs=false,     % show tabs within strings adding particular underscores 
frame=single,     % adds a frame around the code 
tabsize=2,       % sets default tabsize to 2 spaces 
captionpos=b,     % sets the caption-position to bottom 
breaklines=true,    % sets automatic line breaking 
breakatwhitespace=false,  % sets if automatic breaks should only happen at whitespace 
escapeinside={\%*}{*)},   % if you want to add a comment within your code 
% size, font 
commentstyle=\fontsize{7}{7}\selectfont, 
basicstyle=\ttfamily\fontsize{7}{7}\selectfont, 
keywordstyle=\color{red}, 
commentstyle=\color{blue}, 
stringstyle=\color{green} 
}