這個帖子,定義可以透過轉義字串使用的註解指令。有沒有辦法以某種方式在 pdf 輸出中重新格式化定義的註解字串?
例如,是否可以有類似的東西...
\documentclass{article}
\usepackage{listings}
\lstset{basicstyle=\small\sffamily,
numbers=none,
frame=tb,
columns=fullflexible,
comment=[l]{\#},
showstringspaces=false,
escapechar=\&% char to escape out of listings and back to LaTeX
}
\begin{document}
\begin{lstlisting}
Hello # Comment 1
World # Comment 2
\end{lstlisting}
\end{document}
做同樣的事情...
\documentclass{article}
\usepackage{listings}
\newcommand*{\Comment}[1]{\hfill\makebox[3.0cm][l]{$\triangleright$ #1}}%
\lstset{basicstyle=\small\sffamily,
numbers=none,
frame=tb,
columns=fullflexible,
showstringspaces=false,
escapechar=\&% char to escape out of listings and back to LaTeX
}
\begin{document}
\begin{lstlisting}
Hello &\Comment{Comment 1}&
World &\Comment{Comment 2}&
\end{lstlisting}
\end{document}
透過某種方式定義註解字串並commentstyle
使用\Comment{}
命令?
答案1
第一個解決方案是使用選項moredelim=**[il][\hfill$\triangleright$ ]{\#}
。由於\hfill
,如果數字的位數不同,則兩次出現的 Comment 並不正好位於彼此下方。
\documentclass{article}
\usepackage[paperwidth=8cm,paperheight=2cm,left=0.5cm,right=0.5cm]{geometry}
\usepackage{listings}
\lstset{
basicstyle=\small\sffamily,
frame=tb,
columns=fullflexible,
moredelim=**[il][\hfill$\triangleright$ ]{\#}
}
\begin{document}
\begin{lstlisting}
Hello # Comment 9
World # Comment 10
\end{lstlisting}
\end{document}
第二個解決方案是使用選項
escapeinside={\#}{\^^M},
escapebegin={\hfill\begin{minipage}[t]{3cm}$\triangleright$},
escapeend={\end{minipage}}
這樣就預留了3cm的空間。
\documentclass{article}
\usepackage[paperwidth=8cm,paperheight=2cm,left=0.5cm,right=0.5cm]{geometry}
\usepackage{listings}
\lstset{
basicstyle=\small\sffamily,
frame=tb,
columns=fullflexible,
escapeinside={\#}{\^^M},
escapebegin={\hfill\begin{minipage}[t]{3cm}$\triangleright$},
escapeend={\end{minipage}}
}
\begin{document}
\begin{lstlisting}
Hello # Comment 9
World # Comment 10
\end{lstlisting}
\end{document}