下面的代码是tex文件内容,其中包含listing包。
\documentclass[12pt,a4paper]{report}
\usepackage{hyperref}
\usepackage[english]{babel}
\usepackage{xcolor}
\usepackage{listings} % display coding
\usepackage[none]{hyphenat}
\definecolor{codegreen}{rgb}{0,0.6,0}
\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}
\lstdefinestyle{mystyle}{
language=C++,
breaklines=true,
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle={\nhttfamily\footnotesize},
breakatwhitespace=false,
frame=shadowbox,
numbers=left,
numbersep=10pt,
linewidth=\textwidth,
columns=flexible,
}
\lstset{style=mystyle}
% document starts here...
\begin{document}
\lstinputlisting{xxx.cpp}
\end{document}
xxx.cpp 的 cpp 文件内容如下所示。
1 //(title name) This Programme gives the ouput for the theory of the Programme gives the ouput for the theory of the Programme gives the ouput for the theory.
2 #include <iostream>
3 using namespace std;
4 int main() {
5 Code goes here...
6 return 0;
7 }
当yyy.tex
文件运行时,第一行xxx.cpp
出现在右边距之外。但是当我在包中将选项“ none
”更改为“ htt
”时hyphenat
,它会给出正确的输出。但 tex 文档中除列表之外的其余内容都启用了连字符。
我所需要的是,\usepackage[none]{hyphenat}
我需要 cpp 的第一行出现在框架内。或者任何可以满足我的两个需求的解决方案,即我的文档中的所有内容都应该不带连字符,并且 .cpp 的第一行保留在框架内。
提前致谢,
答案1
您可以在列出之前更改惩罚(它也适用于 \lstinputlisting):
\documentclass[12pt,a4paper]{report}
\usepackage[none]{hyphenat}
\usepackage{listings}
\lstdefinestyle{mystyle}{
breaklines=true,
breakatwhitespace=false,
}
\lstset{style=mystyle}
\makeatletter\lst@AddToHook{PreSet}{\exhyphenpenalty=50 }\makeatother
\begin{document}
\begin{lstlisting}
1 //(title name) This Programme gives the ouput for the theory of the Programme gives the ouput for the theory of the
\end{lstlisting}
\end{document}