안녕하세요.
TeX의 listing 패키지를 사용하던 중..
한글 코맨트가 색이 칠해지지 않아 어찌해결 할까 고민중 도움을 받고자 글을 올리게 되었습니다.
\documentclass[a4paper,footnote]{oblivoir}
\pagestyle{hangul}
%\usepackage[default]{memucs-interword-x}
%\interhword{.4}{.1}{.1}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\usepackage{caption}
\usepackage{geometry}
\usepackage{color}
\usepackage{fontspec}
\usepackage{vhistory}
\newfontfamily{\ttconsolas}{Consolas}
\setmainfont[Mapping=tex-text]{TeX Gyre Termes}
\setsansfont[Mapping=tex-text]{TeX Gyre Heros}
\setkormainfont(NanumBarunGothicBold){NanumBarunGothic}
\setkorsansfont(NanumGothicExtraBold)(NanumGothicBold){NanumGothic}
\definecolor{codekeyword}{rgb}{0.34,0.61,0.84}
\definecolor{codecomment}{rgb}{0.34,0.65,0.29}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstset{
commentstyle=\color{codecomment}\textit,
keywordstyle=\color{codekeyword}\textbf,
numberstyle=\small\color{codegray},
stringstyle=\color{codepurple},
frame=top,frame=bottom,
basicstyle=\small\normalfont\ttconsolas,
stepnumber=1,
numbers=left,
numbersep=10pt,
tabsize=2,
extendedchars=true,
breaklines=true,
captionpos=t,
mathescape=true,
stringstyle=\color{white}\ttfamily,
showspaces=false,
showtabs=false,
xleftmargin=17pt,
framexleftmargin=17pt,
framexrightmargin=17pt,
framexbottommargin=5pt,
framextopmargin=5pt,
showstringspaces=false
}
\DeclareCaptionFormat{listing}{\rule{\dimexpr\textwidth+17pt\relax}{0.4pt}\par\vskip1pt#1#2#3}
\captionsetup[lstlisting]{format=listing,singlelinecheck=false, margin=0pt, font={sf},labelsep=space,labelfont=bf}
\renewcommand\lstlistingname{Example}
\begin{document}
\begin{lstlisting}[language=C++,caption={테스트입니다. 하이하이},escapeinside=`']
#include <tuple>
#include <iostream>
#include <array>
#include <utility>
// Convert array into a tuple
template<typename Array, std::size_t... I>
decltype(auto) a2t_impl(const Array& a, std::index_sequence<I...>)
{
return std::make_tuple(a[I]...);
}
template<typename T, std::size_t N, typename Indices = std::make_index_sequence<N>>
decltype(auto) a2t(const std::array<T, N>& a)
{
return a2t_impl(a, Indices());
}
// pretty-print a tuple
// comment `한글 주석 스페이스도 안되나?' dmdm
template<class Ch, class Tr, class Tuple, std::size_t... Is>
void print_tuple_impl(std::basic_ostream<Ch,Tr>& os,
const Tuple & t,
std::index_sequence<Is...>)
{
using swallow = int[]; // guarantees left to right order
(void)swallow{0, (void(os << (Is == 0? "" : ", ") << std::get<Is>(t)), 0)...};
}
template<class Ch, class Tr, class... Args>
decltype(auto) operator<<(std::basic_ostream<Ch, Tr>& os,
const std::tuple<Args...>& t)
{
os << "(";
print_tuple_impl(os, t, std::index_sequence_for<Args...>{});
return os << ")";
}
int main()
{
std::array<int, 4> array = {1,2,3,4};
// convert an array into a tuple
auto tuple = a2t(array);
static_assert(std::is_same<decltype(tuple),
std::tuple<int, int, int, int>>::value, "");
// print it to cout
std::cout << tuple << '\n';
}
\end{lstlisting}
\end{document}
로 작성하였습니다..
도움을 주시면 감사하겠습니다.
KTUG 한국 텍 사용자 그룹