KTUG 한국 텍 사용자 그룹

Menu

KTUG :: Q&A 마당 › 수식에서도 사용가능한 verbatim 구현 명령과 색깔 지정

Progress | 2014.05.16 19:12:30 | 메뉴 건너뛰기 쓰기

1. 수식에서도 \verb 명령을 쓰는 것까지는 해결하고 (수직모드를 일단 빠져나오도록 하는) 

2. 그리고 수식에서 그 부분만 컬러를 주고 싶은데, 그게 잘 안됩니다.


etoolbox 패키지의 \preto, \appto, \pretocmd, \apptocmd 따위를 잘 패치하면 될 것 같은데, 잘 안 됩니다. 


etoolbox_and_customized_verb_command_patch.png


\documentclass[nanum,b4paper]{oblivoir}



\usepackage{listings}


\usepackage{etoolbox}

\expandafter\patchcmd\csname \string\lstinline\endcsname{%

\leavevmode

\bgroup

}{%

\leavevmode

\ifmmode\hbox\fi

\bgroup

}{}{%

\typeout{Patching of \string\lstinline\space failed!}%

}


\usepackage{xcolor}


\let\mverb\lstinline


\lstset{basicstyle=\ttfamily}


\pretocmd{\mverb}{\color{red}}{}{}

%\apptocmd{\mverb}{}{}{}


\lstset{columns=fullflexible,frame=single}


\begin{document}


이것은 \lstinline{listings} 패키지의 \lstinline{\lstinline} 명령어입니다.


\verb!\lstinline{\foo X_S %&$}!와 같이 입력하면 \lstinline{\foo X_S %&$}와 같이 나옵니다.


이 \lstinline{\lstinline} 명령을 수식에서도 쓰도록 하기 위해 다음과 같이 패치하였습니다. 수직모드를 잠시 빠져나오도록 하는 것 같습니다. (\href{http://www.rqna.net/qna/qiiuuq-how-can-i-make-lstinline-function-normally-inside-math-mode.html}{Heiko Oberdiek 씨의 글})

\begin{lstlisting}

\usepackage{etoolbox}

\expandafter\patchcmd\csname \string\lstinline\endcsname{%

\leavevmode

\bgroup

}{%

\leavevmode

\ifmmode\hbox\fi

\bgroup

}{}{%

\typeout{Patching of \string\lstinline\space failed!}%

}

\end{lstlisting}


따라서 다음과 같이 수식에서도 \lstinline{\lstinline} 명령을 쓸 수 있습니다.

\begin{lstlisting}

\begin{equation}

x = \lstinline{\foo X_S %&$#^&*()} \sum_{i =1}^\infty

\end{equation}

\end{lstlisting}


\begin{equation}

x = \lstinline{\foo X_S %&$#^&*()} \sum_{i =1}^\infty

\end{equation}


이제 \lstinline{\lstinline} 명령을 \lstinline{\let\mverb\lstinline}처럼 함으로써 강제로 \mverb{\mverb}\color{black} 명령어로 만들었습니다. 그리고 \lstinline{\mverb} 명령 안에 있는 것들은 붉은 색으로 칠하려고 \lstinline{\pretocmd}를 이용하여 패치하였습니다.

\begin{lstlisting}

\pretocmd{\mverb}{\color{red}}{}{}

\end{lstlisting}

근데, \lstinline{\mverb}를 벗어난 뒷부분에도 컬러가 칠해집니다. \verb!\color{red}!가 아마 계속 전역적인 효과를 발휘하는 것일텐데요, 이를 딱 \lstinline{\mverb} 영역에서만 적용하고 싶습니다.

\begin{equation}

x = \mverb{\foo X_S %&$#^&*()} \sum_{i =1}^\infty

\end{equation}


\end{document}


===


장황해졌네요. 


* 전에 "인자를 verbatim으로 찍는 명령"의  newverbs 패키지의 \collectverb를 이용하면 컬러를 쉽게 제어할 수 있었는데, 

이것은 수식 모드에서는 쓸 수 없습니다. 위의 예로 든 \lstinline를 후킹(패치)할 수 밖에 없던 것이, \collectverb를 수식 모드에서 쓰는 방법을 찾아내는 데 실패했기 때문입니다. 


* 결국 제가 구현하고 싶은 것은 본문이든 수식이든 간에, verbatim 텍스트를 구현하는 "\mverb" 명령을 쓰되 컬러까지 제어하고 싶은 것입니다. 


\pretocmd{\mverb}{\color{red}}{}{} %% \bgroup을 넣어주고 

%\apptocmd{\mverb}{}{}{} %% 적당히 \egroup을 넣어주면 될 것 같은데, 잘 모르겠습니다. 




첨부 [3]

댓글 [9]

댓글 쓰기

목록

KTUG 한국 텍 사용자 그룹