소개
Highlight은 André Simon이 개발한 소스 코드 구문 강조 도구로, 다양한 프로그래밍 언어를 지원하여 코드를 HTML, LaTeX, RTF 등 여러 형식으로 변환하여 색칠된 구문 강조 결과를 제공합니다. 이 도구는 구성 가능한 언어 정의와 색상 테마를 통해 사용자 지정 가능한 구문 강조를 제공하며, 명령줄 인터페이스와 그래픽 사용자 인터페이스를 모두 지원합니다. 주요 목적은 소스 코드를 읽기 쉽고 시각적으로 강조된 형식으로 변환하여 문서화, 발표, 블로그 게시물 등에 활용하는 것입니다.
상세정보
다양한 출력 형식 지원
Highlight은 HTML5, XHTML 1.1, Plain TeX, LaTeX, RTF, OpenDocument Text, SVG, BBCode, Pango 마크업 및 터미널 이스케이프 시퀀스(16색, 256색, truecolor)를 포함한 múltiples 출력 형식을 지원합니다. 사용자는 -O 또는 –out-format 옵션을 통해 원하는 출력 형식을 지정할 수 있습니다.
구문 강조 및 사용자 정의
키워드, 타입, 문자열, 숫자, 이스케이프 시퀀스, 주석, 연산자 및 전처리기 지시자에 대한 구문 강조를 제공하며, 모든 구문 요소는 정규 표현식 또는 일반 문자열 목록으로 정의됩니다. 사용자는 –style 옵션을 통해 색상 테마를 변경하거나, –config-file 옵션을 통해 사용자 정의 Lua 스크립트로 언어 정의와 테마를 수정할 수 있습니다.
코드 포맷팅 및 줄 번호
-F 또는 –reformat 옵션을 통해 C, C++, C# 및 Java 소스 코드의 들여쓰기 및 포맷팅을 지원하며, -l 또는 –line-numbers 옵션을 통해 출력에 줄 번호를 추가할 수 있습니다. 줄 번호 시작 값은 -m 또는 –line-number-start로 설정할 수 있고, 줄 번호 너비는 -j 또는 –line-number-length로 조정할 수 있습니다.
줄 바꿈 및 폰트 설정
-V 또는 –wrap-simple 옵션으로 80자 이후 줄 바꿈을 수행하고, -W 또는 –wrap 옵션으로 줄 바꿈을 적용할 수 있습니다. -k 또는 –font 옵션으로 출력 형식에 따라 폰트를 지정하고, -K 또는 –font-size 옵션으로 폰트 크기를 조정할 수 있습니다.
다운로드·설치 방법
Highlight은 Scoop 패키지 관리자를 통해 설치할 수 있으며, 패키지 ID는 ‘scoop.main.highlight’입니다. 공식 웹사이트에서 ZIP 형식의 바이너리를 다운로드하여 압축을 해제한 후 실행 파일을 사용할 수 있습니다. 아키텍처는 x64를 지원합니다.
기본 사용법/명령어
기본적인 사용법은 다음과 같습니다. 입력 파일 main.cpp를 강조하여 HTML 파일로 생성하려면: highlight -i main.cpp -o main.cpp.html 또는 highlight
줄 번호와 함께 CSS를 포함하여 HTML을 생성하려면: highlight -i main.cpp -o main.cpp.html –include-style –line-numbers 를 사용합니다. 인라인 CSS를 원한다면 –inline-css 옵션을 추가합니다.
LaTeX 출력을 생성하려면 호스트 포맷 스타일과 색상 테마를 지정하여: highlight -O latex -i main.cpp -o main.cpp.html –reformat horstmann –style neon 과 같이 사용할 수 있습니다. 지원되는 출력 형식 목록은 html, xhtml, latex, tex, odt, rtf, ansi, xterm256, truecolor, bbcode, pango, svg 입니다.
출력 디렉토리를 지정하려면 -d 또는 –outdir 옵션을 사용하며, 배치 처리 시 -B 또는 –batch-recursive 옵션으로 하위 디렉토리의 모든 일치하는 파일을 처리할 수 있습니다. 예를 들어 -B ‘*.cpp’ 로 모든 C++ 파일을 재귀적으로 처리할 수 있습니다.
이런 경우에 유용합니다
소스 코드를 기술 문서, 위키, 블로그 게시물 또는 발표 슬라이드에 포함시켜야 하는 개발자나 기술 저작가가 구문 강조를 통해 코드의 가독성을 높이고자 할 때 유용합니다. 예를 들어 C++ 코드를 HTML 형식으로 변환하여 웹 문서에 삽입하거나, Java 소스를 LaTeX로 변환하여 학술 논문에 포함시키는 경우에 활용할 수 있습니다.
제한 사항·확인 사항
- 코드 포맷팅(-F 또는 –reformat 옵션)은 C, C++, C# 및 Java 입력 파일에서만 작동합니다.
- 줄 바꿈 기능(-V 또는 -W 옵션)을 사용할 때 긴 단일 줄 주석 및 전처리기 지시자의 강조가 잘못될 수 있습니다.
- 줄 범위 지정(–line-range 옵션)은 다중 줄 구문 요소와 간섭이 발생할 수 있으므로 주의가 필요합니다.
- LSP(Language Server Protocol) 기능을 사용할 때는 절대 경로를 가진 입력 파일이 필요하며, 코드 포맷팅(-F)이 비활성화됩니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


