Trình soạn thảo văn bản để in mã C ++


34

Tôi đang tìm một trình soạn thảo để in (trên giấy) mã C ++. Tôi hiện đang ở trường kỹ sư và người hướng dẫn đã yêu cầu chúng tôi nộp mã trên giấy.

Anh ta muốn tên + họ, số lớp (trên tiêu đề), số trang ở dưới cùng và các từ dành riêng được in đậm cho mỗi trang!

Trên Windows nó có thể được thực hiện với notepadd++. Nhưng tôi đang dùng Linux và tôi chưa tìm thấy IDE hay trình soạn thảo văn bản nào hoạt động. (Tôi đã cố gắng SCITE, geditSyntaxic)


4
a2ps là bạn của bạn Hãy dành thời gian của bạn để cấu hình nó.
Satō Katsura

5
Đối với các yêu cầu như thế này, bạn có thể muốn xem xét softwarerecs.stackexchange.com
Eric Renouf

30
Nghe có vẻ như giáo viên của bạn đã đầu tư vào ngành khai thác gỗ.
Anthon

10
Giáo viên của bạn muốn mã ... trên giấy ?!
Cuộc đua nhẹ nhàng với Monica

8
@ loi219 Một giáo viên "trường học cũ" hay một "giáo viên trường học" cũ, hoặc cả hai? ;-)
user800

Câu trả lời:


76

Chà, nếu bạn muốn đi xa hơn, hãy làm điều đó trong LaTeX và cung cấp một tệp PDF cấp độ chuyên nghiệp. Bạn chưa đề cập đến bản phân phối của mình nên tôi sẽ đưa ra hướng dẫn cho các hệ thống dựa trên Debian. Ý tưởng cơ bản tương tự có thể được thực hiện trên bất kỳ Linux nào.

  1. Cài đặt hệ thống LaTeX và các gói cần thiết

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. Tạo một tệp mới (gọi nó report.tex) với các nội dung sau:

    \documentclass{article}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    %% Define your header here. 
    %% See http://texblog.org/2007/11/07/headerfooter-in-latex-with-fancyhdr/
    \fancyhead[CO,CE]{John Doe, Class 123}
    
    \usepackage[usenames,dvipsnames]{color}  %% Allow color names
    
    %% The listings package will format your source code
    \usepackage{listings}
    \lstdefinestyle{customasm}{
      belowcaptionskip=1\baselineskip,
      xleftmargin=\parindent,
      language=C++,
      breaklines=true, %% Wrap long lines
      basicstyle=\footnotesize\ttfamily,
      commentstyle=\itshape\color{Gray},
      stringstyle=\color{Black},
      keywordstyle=\bfseries\color{OliveGreen},
      identifierstyle=\color{blue},
      xleftmargin=-8em,
      showstringspaces=false
    }        
    \begin{document}
    
    \lstinputlisting[style=customasm]{/path/to/your/code.c}
    
    \end{document}
    

    Chỉ cần đảm bảo thay đổi /path/to/your/code.ctrong dòng áp chót để nó trỏ đến đường dẫn thực tế của tệp C của bạn. Nếu bạn có nhiều hơn một tệp để bao gồm, hãy thêm một \newpagevà sau đó là một \lstinputlistingtệp mới cho tệp khác.

  3. Biên dịch PDF (cái này tạo ra report.pdf)

    pdflatex report.tex    
    

Tôi đã thử nghiệm điều này trên hệ thống của mình với một tệp ví dụ tôi tìm thấy ở đây và nó tạo ra một tệp PDF trông như thế này:

trang đầu tiên của pdf được tạo

Để có một ví dụ toàn diện hơn sẽ tự động tìm tất cả các tệp .c trong thư mục đích và tạo một tệp PDF được lập chỉ mục với mỗi tệp trong một phần riêng biệt, hãy xem câu trả lời của tôi ở đây .


17
Ngay khi bạn bắt đầu với LaTeX, bạn không thể buông tay! Tôi ước tôi biết TeX ở trường trung học ... (hoặc họ sẽ dạy nó như một cách thay thế cho từ).
Kyslik

2
Tôi nghĩ rằng LaTex sẽ được cài đặt theo mặc định trên hầu hết các hệ thống, đặc biệt là trong một trường kỹ thuật. Nhập "which latex" tại dấu nhắc lệnh: nếu nó trả về một đường dẫn, thường là / usr / bin / latex, bạn có thể bỏ qua bước # 1. Ngoài ra, nếu trình soạn thảo lựa chọn của bạn có ngôn ngữ macro tốt, bạn có thể chạy tập lệnh này từ bên trong trình chỉnh sửa, sử dụng ví dụ: "gv --watch" để hiển thị đầu ra trực tiếp.
jamesqf

4
@jamesqf Tôi chưa bao giờ thấy một hệ thống với LaTeX được cài đặt theo mặc định. Đúng, dân IT ở một số trường có thể đã cài đặt nó và có thể có các bản phân phối Linux chuyên dụng có mặc định, nhưng phần lớn các hệ thống sẽ không.
terdon

3
@terdon - Tôi chưa bao giờ thấy cài đặt trong bộ phận Kỹ thuật mà không có LaTeX. Nó khá cần thiết cho bất cứ ai cần sản xuất đầu ra có thể in được.
Toby Speight

1
@terdon: 'Mặc định' hoặc được chọn khi cài đặt. Tôi không nhớ đã làm gì đặc biệt để có LaTeX trên các hệ thống của mình (OpenSuSE), nhưng đã được một thời gian kể từ khi tôi thực hiện cài đặt cuối cùng. Dù bằng cách nào, kiểm tra là đơn giản.
jamesqf

29

Tôi thường sử dụng ký hiệu: đại loại như

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           -poutput.ps *.cpp

sẽ là một sự khởi đầu - điều này ghi đầu ra postcript vào output.ps, vì vậy bạn có thể xem trước và ghi đè lên trong khi bạn đang sửa đổi cấu hình và sau đó in nó một khi bạn hài lòng. Xem trang người đàn ông cho các tùy chọn rất rộng rãi.

EDIT làm cho chân trang hoạt động chính xác là một chút khó khăn với bản ghi - tôi chưa bao giờ nhận thấy vì tôi chưa bao giờ yêu cầu nó. Nếu bạn lưu tệp này vào ~/.enscript/so.hdr(có thể bạn cần tạo thư mục), bạn thực sự sẽ nhận được đầu ra cần thiết với

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           --fancy-header=so
           -poutput.ps *.cpp

cho

nhập mô tả hình ảnh ở đây


Thô

  • LaTeχ là chất lượng tốt nhất và nhiều công việc nhất để thiết lập,
  • ký hiệu hoặc a2ps là trung gian cả về chất lượng và công việc,
  • :hardcopyLệnh của vim thì dễ nhưng không linh hoạt, và
  • thực hiện đánh dấu cú pháp bằng tay trong trình soạn thảo không nhận biết mã là rất nhiều nỗ lực cho lợi nhuận kém.

Đây hoàn toàn là những gì tôi đang tìm kiếm. Cảm ơn nhiều!
loi219

Tôi thứ hai emscript. Nó có vô số lựa chọn và cho kết quả rất tốt.
rubik

9

Bạn có thể sử dụng :TOhtmllệnh trong vim. Điều này biểu hiện những gì bạn thấy (tức là tô sáng cú pháp) dưới dạng html. Từ đó, một trình duyệt web có thể in thành pdf hoạt động, vì bạn thường có thể tùy chỉnh nội dung tiêu đề / chân trang.

Điều này có thể tương tự như :hardcopylệnh được đề cập bởi Vô dụng, nhưng tôi không thể xác minh trên hệ thống của mình ngay bây giờ.

Một khả năng khác là in từ QtCreator, tuy nhiên dường như không có cách nào để đặt tiêu đề / chân trang.


4

Geany là một IDE đơn giản cung cấp cho bạn nhiều tùy chọn cho những gì diễn ra trong tiêu đề.

Các từ dành riêng có thể được thao tác trong menu tùy chọn nhưng tô sáng mã thực hiện điều này cho kiểu notepad ++. (bạn có thể cần sao chép / tải xuống các bảng màu vào thư mục "/home/$USER_NAME/.config/geany/colorscheme/" để có được bảng màu bạn muốn)

Rất đơn giản và cá nhân tôi thực sự thích số dòng và định dạng nó in.

Ngoài ra geany chạy trên cả windows và linux.

Trang 1

Trang 2

Trang 3


2

Vì bạn yêu cầu một trình soạn thảo , bạn có thể in trực tiếp từ Emacs, sử dụng ps-print-buffer.

Các tiêu đề và chân trang nằm trong nhóm Tùy chỉnh được gọi ps-print-headers.

Giả sử bạn sử dụng khóa phông chữ, bạn có thể có cú pháp tô sáng đó là bắt buộc. Nó có thể được điều chỉnh, nếu cần thiết, sử dụng ps-extend-facechức năng.


Tuy nhiên, tôi vẫn khuyên bạn nên sử dụng một công cụ 'xay' thích hợp, chẳng hạn như danh sách a2ps, bản ghi hoặc LaTeX +.


1

Để hoàn thiện, và mặc dù tôi không khuyến nghị giải pháp đó, lpchương trình có một -o prettyprinttùy chọn có thể làm nổi bật cú pháp.

Bạn có thể sử dụng nó như thế này chẳng hạn:

lp -t "Name Surname | Class" -o document-format=application/x-csource -o prettyprint path/to/code.cpp

Ở đây tôi đã sử dụng -ttùy chọn (tiêu đề) để đặt tiêu đề. Tôi không thể thay đổi chân trang mặc dù (nhưng số trang xuất hiện ở trên cùng). Bạn có thể đặt loại tệp với tùy chọn -o document-format (danh sách giá trị chấp nhận được nên có /usr/share/cups/mime/mime.typeshoặc có thể /etc/cups/mime/mime.types) nhưng nếu tệp của bạn có phần mở rộng chính xác, thì không cần thiết. Ngoài ra, đánh dấu cú pháp là không hoàn hảo.


1

Bạn chỉ cần LibreScript Writer .

Dán mã C / C ++ của bạn.

Tìm các từ và làm cho Bold tất cả các từ khóa C ++.

Bạn có thể tìm thấy chúng ở đây: http://en.cppreference.com/w/cpp/keyword

Để tìm một từ Nhấn Ctrl + F. Chọn "Match case" và nhấp Find All (như trong ảnh chụp màn hình).

nhập mô tả hình ảnh ở đây

Sau đó, bạn cần một Header và Footer với tên và số trang của bạn.

EDIT: ( Barshe Strobbe đã nhận xét :)

Có một phần mở rộng LibreScript để tô màu mã: Trình định dạng mã màu . (Tôi chưa thử nó.)


41
Eww, đánh dấu cú pháp thủ công.
Vô dụng

Bạn có ý kiến ​​gì không?
loi219

7
Ngoài ra, eww, mã ở phông chữ có chiều rộng thay đổi :(
cat

2
Có một phần mở rộng LibreScript để tô màu mã: Trình định dạng mã màu . (Tôi chưa kiểm tra nó.)
user800

1
Điều này có vẻ đau đớn
Joe

0

Tôi đã từng sử dụng Nedit khi tôi sử dụng hệ thống Solaris nhiều năm trước vì tôi thích giao diện GUI. Tôi thấy rằng nó vẫn còn xung quanh. Kiểm tra nó ra.


-2

Trong quá khứ khi KDE3 vẫn còn là một vấn đề lớn, tôi đã sử dụng Kate becaus cho một trình soạn thảo văn bản, nó thực sự tạo ra đầu ra tốt nhất. Hôm nay tôi sẽ đi với latex cho một giải pháp dễ nhúng hơn, với việc liệt kê gói. Gói này không dành cho đầu ra màu, nhưng trên máy in laser màu không phải là một lợi thế.


2
Điều này không thực sự trả lời câu hỏi, phải không?
phản hồi

Thật ra nó trả lời câu hỏi. Câu trả lời là: "Hãy xem Kate, nó đã chứng minh là tốt trong quá khứ đối với tôi"
Arne
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.