Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
verbatimfile안에 강조 색상 넣기
2014.10.25 21:03
안녕하세요.
\verbatimfile{Stack.java} 명령을 사용해서 프로그램의 소스를 삽입할려고 합니다.
프로그램 소스 중의 일부 강조하고 싶은 부분의 색상을 다르게 하고 싶습니다.
예제 프로그램은 몇 줄 안되지만 긴 소스 프로그램도 저런 식으로 삽입할 경우가 많습니다.
이런 식의 소스 프로그램을
주요한 부분을 이런 식으로 강조하고 싶습니다.
게시판 검색을 해보니 fancyvrb 패키지를 이용해서 강조색을 넣는 게 verbatim에서는 있는 것 같던데,
간단한 소스 같은 경우는 이와 같은 방법이 유용하겠지만, 이미 화일로 있는 긴 소스 코드의 경우는
verbatim을 사용하기가 만만찮은 작업이 될 거 같습니다.
소스 화일을 \verbatimfile 을 이용해서 삽입하되, 소스의 일부 영역에만 강조 색상을 넣는 방법을 알고 싶습니다.
제가 사용한 tex 화일입니다.
\documentclass{slides}\pagestyle{empty}
\usepackage[usenames]{color}
\usepackage{verbfile}
\usepackage{varwidth}
\usepackage{epsf,program,epsfig}
\usepackage[euc]{kotex}
\definecolor{MyDarkBlue}{rgb}{0,0.08,0.35}
\begin{document}
\tiny
\verbatimfile{Stack.java}
\end{document}
감사합니다.
댓글 3
-
Progress
2014.10.27 11:13
-
nanim
2014.10.27 13:54
전제가 소스 코드 파일(Stack.Java)에 마크업을 전혀 하지 않으면서 일부 행에 대하여 칼러링을 하고 싶다는 것이라면, 솔직히 이거다 싶은 해결책이 없습니다.
만약 소스 코드 파일에 약간의 마크업이 허용된다면 수많은 방법이 있겠지만 말이죠.
그래도 어떻게든 굳이 해야 한다면....
색을 칠하고 싶은 행이 예컨대 212, 213 두 행이라고 하죠. (이 행번호마저 확인하고 싶지 않다면 정말로 방법이 없습니다.)
\usepackage{listings}
\usepackage{lstlinebgrd}
\lstset{....
linebackgroundcolor={%
\ifnum212=\value{lstnumber}\color{green}\else
\ifnum213=\value{lstnumber}\color{green}\fi\fi},
}
원하시는 foreground 색상은 아니지만 해당 행의 배경색을 칠할 수 있습니다.
-
강토
2014.10.27 19:11
답변 감사합니다.
소스 코드에서 핵심 알고리즘 구현 부분 같은 영역을 강조하고 싶었는 데,
위에 언급해 주신 패키지들을 살펴 보면 뭔가 방법이 있을 것도 같습니다.
안되면 강조하고 싶은 부분을 코멘트 처리하고 코멘트 색깔을 red로 하는 식으로 말이죠. ^^
다시 한 번 감사드립니다.
소스 코드 하이라이팅에 관한 패키지는 많이 있습니다.
여기서는 listnigs 패키지를 잠깐 소개합니다.
> texdoc listings
listings 패키지는 다양한 프로그래밍 랭귀지에 대해 소스 코드 하이라이팅을 제공합니다.
\lstinputlisting 명령은 외부에 있는 stack.java 파일을 직접 넣을 때 사용합니다.
그리고 소스코드마다 줄번호를 표기하고, 본문에 언급할 때는 해당 줄번호를 참고하라는 식으로 처리하면 어떨까 싶습니다.
지금 줄번호는 2줄마다(stepnumber=2) 소스코드의 왼쪽에(numbers=left) 아주 작은 모노폰트로(numberstyle=\tiny\ttfamily) 매기게 해놨습니다.
\documentclass[a4paper]{oblivoir}
\usepackage[svgnames]{xcolor}
\usepackage{listings}
\lstset{
basicstyle=\small\ttfamily,
keywordstyle=\color{MidnightBlue},
stringstyle=\color{DarkRed},
commentstyle=\color{DarkGreen},
showspaces=false,
columns=fullflexible,
breaklines=true,
numbers=left,
numberstyle=\tiny\ttfamily,
stepnumber=2,
}
\begin{document}
\lstinputlisting[%
language=Java,
]{Stack.java}
\end{document}
===
최근에 보았던 것은 에드님이 소개해주신 python과 pygmentize를 이용하는 방법이었고요. 이게 좀더 listings 패키지보다 유연할 수도 있겠다는 생각도 들었습니다. 이는 verbments 패키지를 얹고 하이라이팅은 잠깐 python에 맡긴 다음 이를 다시 호출하여 텍 문서에 삽입하는 방법으로 컴파일할 때 --shell-escape 옵션을 주어야합니다.
(자세한 것은 http://www.ktug.org/xe/index.php?document_srl=175643 참고)
또 pygmentex 이라는 패키지도 최근에 개발된 것으로 알고 있습니다.
http://wiki.ktug.org/wiki/wiki.php/pygmentex