Thêm mã lập trình vào LaTex / LyX


10

Có lẽ tôi chỉ dày, nhưng tôi không thể tìm thấy bất kỳ cách hợp lý nào để chỉ cần dán mã (python) của mình vào latex mà không làm mất tất cả thông tin thụt lề (loại quan trọng đối với python).

Bất cứ ai có bất kỳ ý tưởng sáng sủa? Tôi không lo lắng về việc làm nổi bật cú pháp; tất cả những gì tôi muốn là chìa khóa trở lại!

Câu trả lời:


13

Môi trường yêu thích của tôi cho đúc này . Tôi sử dụng nó để nhập toàn bộ tệp nguồn như:

\inputminted[linenos,fontsize=\scriptsize]{python}{script.py}

Bạn cũng có thể sử dụng nó mà không inputing một tập tin, và quan trọng hơn, xác định bao nhiêu thụt nó gobbles khi dán:

\newminted{python}{gobble=4,linenos,fontsize=\scriptsize}
\begin{pythoncode}
    print('I am a Python script')
\end{pythoncode}

Bằng cách đó, LaTeX của bạn vẫn được thụt lề độc đáo, nhưng mã nguyên văn của bạn thì không. Điều này cũng cung cấp tính năng tô sáng cú pháp mà tôi biết bạn đã đề cập đến mà bạn không quan tâm. Chỉ cần không xác định ngôn ngữ.


4

Bạn sẽ muốn sử dụng môi trường nguyên văn: http://web.mit.edu/vogt/www/latex/ltx-79.html

Nếu vấn đề xảy ra ngay lập tức khi bạn dán nó vào ... bạn có đang sử dụng IDE để tạo tài liệu không? Hãy thử chỉ mở tệp trong trình soạn thảo văn bản đơn giản như gedit hoặc notepad.


2

Tôi muốn đi với minted, như fideli đề nghị, nhưng nó tốt đến mức khó nhận biết các listingsgói , đó là một giải pháp cao su nguyên chất ot vấn đề.

mintedcó nguồn gốc từ Pygments , một công cụ tô sáng nguồn được viết bằng Python. mintedcoimes với một cây cầu cao su, dựa trên \write18, và các texmentsgói cung cấp một cho Pygments. Không có nhược điểm nào mintedso với Pygments mà tôi biết: có thể cả hai sẽ được hợp nhất vào một lúc nào đó.


1

Để sử dụng gói danh sách, bạn sẽ phải bao gồm gói và tải các ngôn ngữ cần thiết trong phần mở đầu:

\usepackage{listings}
\lstloadlanguages{Python}

Đặt một số tùy chọn bên trong tài liệu:

\lstset{language=Python,tabsize=2}

... và sau đó bạn có thể cung cấp đoạn trích nội tuyến:

\begin{lstlisting}
  print ("Hello, World!")
\end{lstlisting}

... hoặc đọc chúng từ một tập tin:

\lstinputlisting[firstline=10,lastline=20]{Hello.py}

... hoặc viết mã nội tuyến: \lstinline!print ("Hello, World!")!


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.