แก้ไขข้อความสำหรับการพิมพ์รหัส C ++


34

ฉันกำลังมองหาบรรณาธิการที่จะพิมพ์ (บนกระดาษ) รหัส C ++ ตอนนี้ฉันอยู่โรงเรียนวิศวกรรมและผู้สอนขอให้เราส่งรหัสบนกระดาษ

เขาต้องการชื่อ + นามสกุล, หมายเลขคลาส (ที่ส่วนหัว), จำนวนหน้าที่อยู่ด้านล่างและคำสงวนไว้เป็นตัวหนาสำหรับทุกหน้า!

บน Windows notepadd++ก็สามารถทำได้ด้วย แต่ฉันใช้ Linux และไม่พบ IDE หรือโปรแกรมแก้ไขข้อความที่ใช้ได้ (ผมเคยพยายามแล้วSCITE, geditและSyntaxic)


4
a2psเป็นเพื่อนของคุณ ใช้เวลาในการกำหนดค่า
Satō Katsura

5
สำหรับคำขอเช่นนี้คุณอาจต้องพิจารณาsoftwarerecs.stackexchange.com
Eric Renouf

30
ดูเหมือนว่าอาจารย์ของคุณจะลงทุนในอุตสาหกรรมทำไม้
Anthon

10
ครูของคุณต้องการรหัส ... บนกระดาษ ?!
การแข่งขัน Lightness กับ Monica

8
@ loi219 ครู "โรงเรียนเก่า" หรือครูโรงเรียน "เก่า" หรือทั้งสองอย่าง? ;-)
user800

คำตอบ:


76

ถ้าคุณต้องการที่จะเพิ่มไมล์ให้ทำมันใน LaTeX และให้ไฟล์ PDF ระดับมืออาชีพ คุณยังไม่ได้กล่าวถึงการแจกจ่ายดังนั้นฉันจะให้คำแนะนำสำหรับระบบที่ใช้เดเบียน แนวคิดพื้นฐานเดียวกันนี้สามารถทำได้บน Linux ใด ๆ

  1. ติดตั้งระบบ LaTeX และแพ็คเกจที่จำเป็น

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. สร้างไฟล์ใหม่ (เรียกว่าreport.tex) ด้วยเนื้อหาดังต่อไปนี้:

    \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}
    

    เพียงตรวจสอบให้แน่ใจว่ามีการเปลี่ยนแปลง/path/to/your/code.cในบรรทัดสุดท้ายเพื่อให้ชี้ไปที่เส้นทางที่แท้จริงของไฟล์ C ของคุณ หากคุณมีมากกว่าหนึ่งไฟล์ที่จะรวมเพิ่ม\newpageและจากนั้นใหม่\lstinputlistingสำหรับไฟล์อื่น

  3. รวบรวม PDF (สิ่งนี้จะสร้างreport.pdf)

    pdflatex report.tex    
    

ฉันทดสอบสิ่งนี้ในระบบของฉันด้วยไฟล์ตัวอย่างที่ฉันพบที่นี่และสร้าง PDF ที่มีลักษณะดังนี้:

หน้าแรกของไฟล์ PDF ที่สร้างขึ้น

สำหรับตัวอย่างที่ครอบคลุมมากขึ้นที่จะหาไฟล์ .c ทั้งหมดในโฟลเดอร์เป้าหมายและสร้างไฟล์ PDF การจัดทำดัชนีที่มีในแต่ละส่วนที่แยกต่างหากดูคำตอบของฉันที่นี่


17
ทันทีที่คุณเริ่มต้นด้วย LaTeX คุณจะไม่สามารถละทิ้ง! ฉันหวังว่าฉันจะรู้ TeX ในโรงเรียนมัธยม ... (หรือพวกเขาจะสอนมันเป็นทางเลือกแทนคำ)
Kyslik

2
ฉันคิดว่า LaTex จะติดตั้งตามค่าเริ่มต้นในระบบส่วนใหญ่โดยเฉพาะในโรงเรียนวิศวกรรม พิมพ์ "latex" ที่หน้าจอพร้อมรับคำสั่ง: หากส่งคืนพา ธ โดยทั่วไปแล้ว / usr / bin / latex คุณสามารถข้ามขั้นตอน # 1 นอกจากนี้หากบรรณาธิการที่คุณเลือกมีภาษามาโครที่เหมาะสมคุณสามารถเรียกใช้สคริปต์นี้จากภายในเครื่องมือแก้ไขโดยใช้เช่น "gv --watch" เพื่อแสดงผลสด
jamesqf

4
@jamesqf ฉันไม่เคยเห็นระบบที่ติดตั้ง LaTeX เป็นค่าเริ่มต้น ใช่คนไอทีในโรงเรียนบางแห่งอาจติดตั้งแล้วและอาจมีการกระจาย Linux เฉพาะที่มีค่าเริ่มต้น แต่ระบบส่วนใหญ่จะไม่
terdon

3
@terdon - ฉันไม่เคยเห็นการติดตั้งในแผนกวิศวกรรมโดยไม่มี LaTeX มันค่อนข้างสำคัญสำหรับผู้ที่ต้องการผลิตงานพิมพ์
Toby Speight

1
@terdon: 'Default' หรือเลือกเมื่อติดตั้ง ฉันจำไม่ได้ว่าต้องทำอะไรเป็นพิเศษเพื่อให้ LaTeX บนระบบของฉัน (OpenSuSE) แต่มันก็ไม่นานหลังจากที่ฉันติดตั้งครั้งล่าสุด ทั้งสองวิธีการตรวจสอบนั้นง่าย
jamesqf

29

ฉันมักจะใช้ enscript: สิ่งที่ชอบ

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

จะเป็นการเริ่มต้น - นี่จะเขียนเอาต์พุตของ postscript ไปที่output.psดังนั้นคุณสามารถดูตัวอย่างและเขียนทับได้ในขณะที่คุณกำลังปรับแต่งค่าคอนฟิกแล้วพิมพ์เมื่อคุณพอใจ ดูหน้าคนสำหรับตัวเลือกที่ครอบคลุมมากขึ้น

การแก้ไขส่วนท้ายให้ทำงานอย่างถูกต้องเป็นความเจ็บปวดเล็กน้อยที่มี enscript - ฉันไม่เคยสังเกตเห็นเพราะฉันไม่เคยต้องการมัน หากคุณบันทึกไฟล์นี้ไว้~/.enscript/so.hdr(คุณอาจต้องสร้างไดเรกทอรี) คุณจะได้ผลลัพธ์ที่ต้องการด้วย

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

ให้

ป้อนคำอธิบายรูปภาพที่นี่


ประมาณ

  • LaTeχมีคุณภาพดีที่สุดและทำงานได้ดีที่สุดในการตั้งค่า
  • enscript หรือ a2ps อยู่ตรงกลางทั้งด้านคุณภาพและการทำงาน
  • :hardcopyคำสั่งของกลุ่มเป็นเรื่องง่าย แต่ไม่ยืดหยุ่นและ
  • การทำไวยากรณ์เน้นสีด้วยตนเองในโปรแกรมแก้ไขที่ไม่ต้องใช้โค้ดเป็นความพยายามอย่างมากสำหรับการส่งคืนที่ไม่ดี

นี่คือสิ่งที่ฉันกำลังค้นหา ขอบคุณมาก!
loi219

emscriptผมสอง มีตัวเลือกมากมายและให้ผลลัพธ์ที่ดีมาก
rubik

9

คุณสามารถใช้:TOhtmlคำสั่งในกลุ่ม สิ่งนี้จะทำให้สิ่งที่คุณเห็น (เช่นการเน้นไวยากรณ์) เป็น html จากนั้นเว็บเบราว์เซอร์ที่สามารถพิมพ์เป็น pdf ได้ตามปกติคุณสามารถปรับแต่งเนื้อหาส่วนหัว / ท้ายกระดาษได้

นี่อาจคล้ายกับ:hardcopyคำสั่งที่ไร้ประโยชน์ แต่ฉันไม่สามารถตรวจสอบในระบบของฉันได้ในตอนนี้

ความเป็นไปได้อีกอย่างหนึ่งคือการพิมพ์จาก QtCreator อย่างไรก็ตามดูเหมือนจะไม่มีวิธีการตั้งค่าส่วนหัว / ส่วนท้าย


4

Geany เป็น IDE แบบง่ายที่ให้คุณมีตัวเลือกมากมายสำหรับสิ่งที่เกิดขึ้นในส่วนหัว

คำที่สงวนไว้สามารถจัดการได้ในเมนูตัวเลือก แต่การเน้นโค้ดทำเช่นนี้สำหรับสไตล์แผ่นจดบันทึก ++ (คุณอาจต้องคัดลอก / ดาวน์โหลดชุดสีไปยังโฟลเดอร์ "/home/$USER_NAME/.config/geany/colorschemes/" เพื่อรับชุดที่คุณต้องการ)

ง่ายมากและโดยส่วนตัวแล้วฉันชอบหมายเลขบรรทัดและรูปแบบที่พิมพ์

นอกจากนี้ geany ทำงานบนทั้ง windows และ linux

หน้า 1

หน้า 2

หน้า 3


2

เนื่องจากคุณขอแก้ไขคุณสามารถพิมพ์โดยตรงจาก Emacs ps-print-bufferใช้

ps-print-headersส่วนหัวและส่วนท้ายอยู่ในกลุ่มที่เรียกว่าการกำหนดเอง

สมมติว่าคุณใช้การล็อคแบบอักษรคุณอาจมีการเน้นไวยากรณ์ที่จำเป็น สามารถปรับได้หากจำเป็นโดยใช้ps-extend-faceฟังก์ชั่น


ต้องบอกว่าฉันยังคงแนะนำให้คุณใช้เครื่องมือ 'บด' ที่เหมาะสมเช่น aps, enscript หรือ LaTeX +


1

เพื่อความสมบูรณ์และแม้ว่าฉันจะไม่แนะนำวิธีแก้ปัญหานั้นlpโปรแกรมมี-o prettyprintตัวเลือกที่สามารถทำการเน้นไวยากรณ์ได้

คุณสามารถใช้มันเช่นนี้:

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

ที่นี่ฉันใช้-tตัวเลือก (ชื่อเรื่อง) เพื่อตั้งค่าส่วนหัว ฉันไม่สามารถเปลี่ยนส่วนท้ายได้ (แต่หมายเลขหน้าจะปรากฏที่ด้านบน) คุณสามารถตั้งค่าประเภทไฟล์ด้วยตัวเลือก-o document-format (รายการค่าที่ยอมรับได้ควรอยู่ใน/usr/share/cups/mime/mime.typesหรืออาจจะ/etc/cups/mime/mime.types) แต่ถ้าไฟล์ของคุณมีนามสกุลที่ถูกต้องก็ไม่จำเป็น นอกจากนี้การเน้นไวยากรณ์ยังห่างไกลจากความสมบูรณ์แบบ


1

คุณเพียงแค่ต้องLibreOffice Writer

วางรหัส C / C ++ ของคุณ

ค้นหาคำและทำให้คำหลัก C ++ เป็นตัวหนาทั้งหมด

คุณสามารถค้นหาได้ที่นี่: http://en.cppreference.com/w/cpp/keyword

หากต้องการค้นหาคำกด Ctrl + F. เลือก "จับคู่ตัวพิมพ์ใหญ่" แล้วคลิกค้นหาทั้งหมด (ดังที่แสดงในภาพหน้าจอ)

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากนั้นคุณต้องมีส่วนหัวและท้ายกระดาษพร้อมชื่อและหมายเลขหน้าของคุณ

แก้ไข: ( Christophe Strobbeแสดงความคิดเห็น:)

มีการขยาย LibreOffice สำหรับการระบายสีรหัสคือ: รหัส Colorizer ฟอร์แมต (ฉันยังไม่ได้ทดสอบเลย)


41
Eww, การเน้นไวยากรณ์ด้วยตนเอง
ไม่มีประโยชน์

คุณมีความคิดบางอย่าง?
loi219

7
นอกจากนี้ eww โค้ดในแบบอักษรที่มีความกว้างผันแปร :(
cat

2
มีการขยาย LibreOffice สำหรับการระบายสีรหัสคือ: รหัส Colorizer ฟอร์แมต (ฉันยังไม่ได้ทดสอบเลย)
user800

1
สิ่งนี้ดูเจ็บปวด
Joe

0

ฉันเคยใช้ Nedit เมื่อฉันอยู่ในระบบ Solaris เมื่อหลายปีก่อนเนื่องจากฉันชอบอินเตอร์เฟส GUI ฉันเห็นว่ามันยังอยู่ใกล้ ๆ ลองดูสิ


-2

ในอดีตเมื่อ KDE3 ยังคงเป็นเรื่องใหญ่ฉันใช้ Kate เพราะตัวแก้ไขข้อความจะให้ผลลัพธ์ที่ดีที่สุด วันนี้ฉันจะไปกับลาเท็กซ์เพื่อหาทางออกที่ดีกว่าพร้อมกับบรรจุภัณฑ์ lstlisting แพ็คเกจนี้ไม่ได้มีไว้สำหรับการพิมพ์สี แต่สำหรับเครื่องพิมพ์เลเซอร์สีนั้นไม่ได้เปรียบ


2
นี่ไม่ได้ตอบคำถามใช่ไหม?
Countermode

จริงๆแล้วมันตอบคำถาม คำตอบคือ: "ดูที่ Kate มันพิสูจน์แล้วว่าเป็นสิ่งที่ดีในอดีตสำหรับฉัน"
Arne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.