
Я пытаюсь включить код C++ в свой документ latex. Однако то, что я пробовал, не работает. Все остальное работает нормально, но я не вижу, чтобы C++ отображался как код C++. Он просто написан в том же формате, что и текст "Alpha parts .."
Вот MWE: Текст:
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\lstset {
language=C++,
backgroundcolor=\color{black!5}, % set backgroundcolor
basicstyle=\footnotesize,% basic font setting
}
\begin{document}
Alpha particles \cite{wikip} (named \cite{Comp} after and denoted by the first letter in the
Greek alphabet,\[\alpha\]) consist of two protons and two neutrons bound
together.
This means that an particle is a helium nucleus.
\begin{lstlisting}
int size =1;
*ptr = Mole:getMole(size + 1);
\end{lstlisting}
\bibliographystyle{plain}
\bibliography{BibName}
\end{document}
Ожидаемый результат:
решение1
Вы хотите использовать другое семейство шрифтов для листинга. Поскольку ключевые слова выделены жирным шрифтом в стиле, стандартные шрифты Computer Modern Typewriter не подходят, поскольку у них нет жирного шрифта.
Хорошим семейством моноширинных шрифтов, в котором хорошо видны различия между средним и жирным начертанием, является BeraMono.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{xcolor}
\usepackage[scaled=.85]{beramono}
\lstset{
language=C++,
backgroundcolor=\color{black!5}, % set backgroundcolor
basicstyle=\footnotesize\ttfamily,% basic font setting
columns=fullflexible,
}
\begin{document}
Alpha particles (named after and denoted by the first letter in the Greek alphabet,
$\alpha$) consist of two protons and two neutrons bound together. This means that an
particle is a helium nucleus.
\begin{lstlisting}
int size =1;
*ptr = Mole:getMole(size + 1);
\end{lstlisting}
\end{document}
Обратите внимание, что для встроенной формулы используется $\alpha$
или \(\alpha\)
, а не \[\alpha\]
which , который центрирует формулу.
Я удалил цитаты, не имеющие отношения к данной теме.
решение2
Если вы не можете приступить к listings
работе, есть пакет, verbatimbox
если вам не нужна подсветка ключевых слов.
Здесь я показываю listings
и verbatimbox
для сравнения. Используя verbnobox
среду, можно получить разрывы страниц в середине листинга.
\documentclass{article}
\usepackage{xcolor}
% LISTINGS PREP
\usepackage{listings}
\lstset {
language=C++,
backgroundcolor=\color{black!5}, % set backgroundcolor
basicstyle=\footnotesize,% basic font setting
}
% VERBATIMBOX PREP
\usepackage{verbatimbox}
\def\codesize{\footnotesize}
\newsavebox\thecolorfield
\newcommand\setcolorfield[1][blue!9!gray!8]{%
\savebox{\thecolorfield}{\codesize%
\makebox[0pt][l]{\textcolor{#1}{%
\rule[-\dp\strutbox]{\textwidth}{\dimexpr\ht\strutbox+\dp\strutbox}}}}%
}
\def\colorfield{\usebox{\thecolorfield}}
\setcolorfield
%
\begin{document}
WITH LISTINGS:
\begin{lstlisting}
int size =1;
*ptr = Mole:getMole(size + 1);
\end{lstlisting}
WITH VERBATIMBOX (ttfamily):
\begin{verbnobox}[\colorfield\ttfamily\codesize]
int size =1;
*ptr = Mole:getMole(size + 1);
\end{verbnobox}
\setcolorfield[green!8]
WITH VERBATIMBOX (bold-rmfamily):
\begin{verbnobox}[\colorfield\rmfamily\bfseries\codesize]
int size =1;
*ptr = Mole:getMole(size + 1);
\end{verbnobox}
\end{document}