
下圖顯示了我的問題:
我如何知道\lstinline
在特定的 C++ 運算子處換行?例如:FooFactory::instance()->createFoo()
應如下分解:
... text FooFactory::
instance()->createFoo()
或者
FooFactory::instance()->
createFoo() text text ...
微量元素:
\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}