C ++ 코드 인쇄를위한 텍스트 편집기


34

종이에 C ++ 코드를 인쇄 할 편집기를 찾고 있습니다. 저는 현재 공학 학교에 있으며 강사가 종이에 코드를 제출하도록 요청했습니다.

그는 이름 + 성, 클래스 번호 (헤더), 맨 아래에있는 페이지 수 및 모든 페이지에 대해 굵게 표시된 예약어를 원합니다!

Windows에서는을 사용하여 수행 할 수 있습니다 notepadd++. 그러나 나는 Linux에 있고 작동하는 IDE 또는 텍스트 편집기를 찾지 못했습니다. (나는 이미 시도했습니다 SCITE, gedit그리고 Syntaxic)


4
a2ps 는 당신의 친구입니다. 시간을 내서 구성하십시오.
사토 카츠라

5
이와 같은 요청의 경우 softwarerecs.stackexchange.com
Eric Renouf의

30
선생님이 벌목 산업에 투자 한 것처럼 들립니다.
Anthon

10
선생님이 종이에 코드를 원 하십니까?!
Monica와의 가벼움 경주

8
@ loi219 "고등학교"교사 또는 오래된 "학교 교사"또는 둘 다? ;-)
user800 2016 년

답변:


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.cC 파일의 실제 경로를 가리 키도록 두 번째 줄 을 변경 하십시오. 포함 할 파일이 둘 이상인 경우 다른 파일에 \newpage새 파일을 추가 한 다음 새 파일을 추가 \lstinputlisting하십시오.

  3. PDF 컴파일 (이것이 생성됨 report.pdf)

    pdflatex report.tex    
    

여기 에서 찾은 예제 파일을 사용하여 시스템에서 이것을 테스트 했으며 다음과 같은 PDF를 만듭니다.

작성된 pdf의 첫 페이지

대상 폴더에서 모든 .c 파일을 자동으로 찾고 각각 별도의 섹션에 색인이있는 PDF 파일을 작성하는보다 포괄적 인 예를 보려면 여기 내 답변을 참조 하십시오 .


17
LaTeX로 시작하자마자 놓을 수 없습니다! 고등학교에서 TeX를 알고 있었으면 좋겠다.
Kyslik

2
LaTex는 대부분의 시스템, 특히 공학 학교에 기본적으로 설치 될 것이라고 생각합니다. 명령 프롬프트에 "which latex"를 입력하십시오. 일반적으로 / usr / bin / latex 경로를 반환하면 1 단계를 건너 뛸 수 있습니다. 또한 선택한 편집기에 적절한 매크로 언어가있는 경우 "gv --watch"와 같이 편집기에서이 스크립트를 실행하여 라이브 출력을 표시 할 수 있습니다.
jamesqf

4
@jamesqf 기본적으로 LaTeX가 설치된 시스템은 본 적이 없습니다. 예, 일부 학교의 IT 직원이 설치했을 수 있으며 기본적으로 특수한 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

이것은 시작이 될 것입니다-이것은 포스트 스크립트 출력을에 기록 output.ps하므로 구성을 땜질하는 동안 미리보고 덮어 쓸 수 있으며 일단 만족하면 인쇄 할 수 있습니다. 보다 광범위한 옵션에 대해서는 맨 페이지를 참조하십시오.

바닥 글이 올바르게 작동하도록 편집 하는 것은 약간의 어려움이 있습니다. 이 파일 을 저장 하면~/.enscript/so.hdr (아마도 디렉토리를 만들어야 함) 실제로 필요한 출력을 얻을 수 있습니다.

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

주는

여기에 이미지 설명을 입력하십시오


대충,

  • LaTeχ는 최고의 품질과 설정 작업입니다.
  • 첨자 또는 a2ps는 품질과 업무에있어 중간 수준이며
  • vim의 :hardcopy명령은 쉽지만 유연하지는 않습니다.
  • 비 코드 인식 편집기에서 구문 강조를 수동으로 수행하는 것은 좋지 않은 리턴을위한 많은 노력입니다.

이것은 내가 찾는 것입니다. 대단히 감사합니다!
loi219

두 번째 emscript입니다. 많은 옵션이 있으며 매우 좋은 결과를 제공합니다.
rubik

9

:TOhtmlvim 에서 명령을 사용할 수 있습니다 . 이것은 당신이 보는 것을 (즉, 구문 강조 표시) html로 렌더링합니다. 여기에서 일반적으로 머리글 / 바닥 글 내용을 사용자 지정할 수 있으므로 pdf로 인쇄 할 수있는 웹 브라우저가 작동합니다.

이것은 아마도 :hardcopy쓸모없는 것이 언급 한 명령 과 유사 하지만 지금은 시스템에서 확인할 수 없습니다.

또 다른 가능성은 QtCreator에서 인쇄하는 것이지만 머리글 / 바닥 글을 설정하는 방법은 없습니다.


4

Geany는 헤더에 들어가는 것에 대한 많은 옵션을 제공하는 간단한 IDE입니다.

예약 된 단어는 옵션 메뉴에서 조작 할 수 있지만 코드 강조 표시는 notepad ++ 스타일에서이를 수행합니다. (색 구성표를 "/home/$USER_NAME/.config/geany/colorschemes/"폴더로 복사 / 다운로드해야 원하는 색상 표를 얻을 수 있습니다)

매우 간단하고 개인적으로 나는 줄 번호와 인쇄 형식을 정말로 좋아합니다.

또한 geany는 Windows와 Linux 모두에서 실행됩니다.

페이지 1

2 쪽

3 페이지


2

편집기 를 요청 하므로을 사용하여 Emacs에서 직접 인쇄 할 수 있습니다 ps-print-buffer.

머리글과 바닥 글은이라는 사용자 지정 그룹에 ps-print-headers있습니다.

글꼴 잠금을 사용한다고 가정하면 필요한 구문 강조 표시가있을 수 있습니다. 필요한 경우 ps-extend-face기능을 사용하여 조정할 수 있습니다 .


그래도 a2ps, enscript 또는 LaTeX + 목록과 같은 적절한 '연삭'도구를 사용하는 것이 좋습니다.


1

완벽을 기하기 위해 그 솔루션을 권장하지는 않지만 lp프로그램에는 -o prettyprint구문 강조를 수행 할 수 있는 옵션이 있습니다.

예를 들어 다음과 같이 사용할 수 있습니다.

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

여기에서 -t(title) 옵션을 사용하여 헤더를 설정했습니다. 바닥 글을 변경할 수는 없지만 페이지 번호가 맨 위에 나타납니다. 옵션을 사용하여 파일 유형을 설정할 수 있지만 -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 확장이 있습니다 : Code Colorizer Formatter . (아직 테스트하지 않았습니다.)


41
수동 구문 강조.
쓸모없는

당신은 몇 가지 아이디어가 있습니까?
loi219

7
또한, 가변 폭 글꼴의 코드 :(
cat

2
코드 채색을위한 LibreOffice 확장이 있습니다 : Code Colorizer Formatter . (아직 테스트하지 않았습니다.)
user800

1
이것은 고통스러워 보인다
Joe

0

GUI 인터페이스가 마음에 들어 몇 년 전 Solaris 시스템에있을 때 Nedit을 사용했습니다. 나는 여전히 주위에 있음을 알 수 있습니다. 확인 해봐.


-2

KDE3가 여전히 큰 일이었던 과거에는 Kate becaus를 텍스트 편집기로 사용하여 실제로 최상의 출력을 생성했습니다. 오늘 저는 패키지 lstlisting을 통해 더 임베디드 솔루션을 위해 라텍스를 사용합니다. 이 패키지는 컬러 출력용이 아니지만 레이저 프린터 컬러에서는 이점이 없습니다.


2
이것은 실제로 질문에 대답하지 않습니까?
카운터 모드

실제로 그것은 질문에 대답합니다. 대답은 : "Kate를 살펴보면 과거에는 나에게 좋은 것으로 판명되었습니다"
Arne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.