%EC%97%90%EC%84%9C%20%EC%A4%84%20%EB%B0%94%EA%BF%88%20%ED%97%88%EC%9A%A9.png)
다음 그림은 내 문제를 보여줍니다.
\lstinline
특정 C++ 연산자에서 줄 바꿈을 어떻게 알 수 있나요 ? 예를 들어 FooFactory::instance()->createFoo()
다음과 같이 나누어야 합니다.
... text FooFactory::
instance()->createFoo()
또는
FooFactory::instance()->
createFoo() text text ...
MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[left=6cm,right=7cm]{geometry}
\usepackage{parskip}
\usepackage{showframe}
\usepackage{listings}
\lstset{
language=C++,
basicstyle=\ttfamily,
breaklines=true,
breakatwhitespace=true,
inputencoding=utf8,
extendedchars=true
}
\lstset{literate=% I dont know what I am doing...
{::}{::}{1\discretionary{}{}{}} % line-break at ::
{->}{->}{1\discretionary{}{}{}} % line-break at ->
}
\begin{document}
text text text text text text text text \lstinline{FooFactory::instance()->createFoo()} text text
text text text text
text text text text text text \lstinline{FooFactory::instance()->createFoo()} text text
text text text text
\end{document}
답변1
이것이 왜 작동하는지 이해하지 못합니다. 보다 정확하게는 대체 텍스트 내부 대신 숫자 뒤에 \discretionary를 넣어야 하는 이유를 모르겠습니다.
\documentclass{article}
%\usepackage[utf8]{inputenc}% all it does for me is produce warnings
\usepackage[left=6cm,right=7cm]{geometry}
\usepackage{parskip}
\usepackage{showframe}
\usepackage{listings}
\lstset{
language=C++,
basicstyle=\ttfamily,
breaklines=true,
breakatwhitespace=true,
inputencoding=utf8,
extendedchars=true
}
\lstset{literate={::}{}{0\discretionary{::}{}{::}}% line-break at ::
{->}{}{0\discretionary{->}{}{->}}% line-break at ->
}
\begin{document}
text text text text text text text text \lstinline{FooFactory::instance()->createFoo()} text text text text text text
text text text text text text \lstinline{FooFactory::instance()->createFoo()} text text text text text text
\begin{lstlisting}
FooFactory::instance()->createFoo();
\end{lstlisting}
\end{document}