\documentclass{scrreprt}
\usepackage{regexpatch}% http://ctan.org/pkg/regexpatch
\usepackage{color}
\definecolor{codecolor}{rgb}{0.8,0.9,0.9}
\definecolor{chatcolor}{rgb}{0.9,0.9,0.8}
\usepackage{listings}% http://ctan.org/pkg/listings
\makeatletter
% --------------------------------------- Chat-Auszug
\definecolor{chatbackcolor}{rgb}{0.95,0.95,0.92}
\newcommand{\lstlistchatname}{Chat-Auszug}
\lst@UserCommand\lstlistofchat{\bgroup
\let\contentsname\lstlistchatname
\let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{loc}}%
\tableofcontents \egroup}
\lstnewenvironment{chat}[1][]{%
\renewcommand{\lstlistingname}{Chat}%
\xpatchcmd*{\lst@MakeCaption}{lol}{loc}{}{}%
\lstset{
backgroundcolor=\color{chatbackcolor},
showstringspaces=false,
%framexleftmargin = 2em,
xleftmargin = 1cm,
xrightmargin = 1cm,
extendedchars=true,
captionpos=b,
basicstyle=\small\rmfamily,
%basicstyle=\footnotesize\ttfamily,
tabsize=2,
keywordstyle=\textbf,
stringstyle=\textit,
numbers=none,
numberstyle=\small,
% für schönen Zeilenumbruch
breakautoindent = true,
breakindent = 2em,
breaklines = true,
postbreak = ,
prebreak = \raisebox{-.8ex}[0ex][0ex]{\Righttorque},
frameround=ftff,
frame=single,
literate={ö}{{\"o}}1
{ä}{{\"a}}1
{ü}{{\"u}}1, #1
}}{}
% linksbündige Fußboten
\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}
\typearea{14} % typearea berechnet einen sinnvollen Satzspiegel (das heißt die Seitenränder) siehe auch http://www.ctan.org/pkg/typearea. Diese Berechnung befindet sich am Schluss, damit die Einstellungen oben berücksichtigt werden
\usepackage{scrhack} % Vermeidung einer Warnung
\begin{document}
\chapter{My first chapter}
\section{first}
\section{second}
\begin{chat}[caption={Greeting with hello}\label{chat-greeting}]
Sadik: Hello
\end{chat}
As shown in \ref{chat-greeting} on page \pageref{chat-greeting} ...
\end{document}
我已经定义了一个\lstnewenvironment
名为 的环境(带有 )chat
。我想用 引用此环境\ref{label name}
。但\ref
返回的是章节编号而不是列表编号。在这种情况下,它显示2
,但这1.1
是预期的。
有些帖子提到了 refstepcounter,但我未能正确使用它(而且我不知道它是否有用)
答案1
您需要listings
键label={....}
,而不是\label
。该\label
命令将引用部分(之前已排版),因为这是开始行动(应用计数器)之前2
使用的最后一个计数器\refstepcounter
caption
listings
\documentclass{scrreprt}
\usepackage{regexpatch}% http://ctan.org/pkg/regexpatch
\usepackage{color}
\definecolor{codecolor}{rgb}{0.8,0.9,0.9}
\definecolor{chatcolor}{rgb}{0.9,0.9,0.8}
\usepackage{listings}% http://ctan.org/pkg/listings
\makeatletter
% --------------------------------------- Chat-Auszug
\definecolor{chatbackcolor}{rgb}{0.95,0.95,0.92}
\newcommand{\lstlistchatname}{Chat-Auszug}
\lst@UserCommand\lstlistofchat{\bgroup
\let\contentsname\lstlistchatname
\let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{loc}}%
\tableofcontents \egroup}
\lstnewenvironment{chat}[1][]{%
\renewcommand{\lstlistingname}{Chat}%
\xpatchcmd*{\lst@MakeCaption}{lol}{loc}{}{}%
\lstset{
backgroundcolor=\color{chatbackcolor},
showstringspaces=false,
%framexleftmargin = 2em,
xleftmargin = 1cm,
xrightmargin = 1cm,
extendedchars=true,
captionpos=b,
basicstyle=\small\rmfamily,
%basicstyle=\footnotesize\ttfamily,
tabsize=2,
keywordstyle=\textbf,
stringstyle=\textit,
numbers=none,
numberstyle=\small,
% für schönen Zeilenumbruch
breakautoindent = true,
breakindent = 2em,
breaklines = true,
postbreak = ,
% prebreak = \raisebox{-.8ex}[0ex][0ex]{\Righttorque},
frameround=ftff,
frame=single,
literate={ö}{{\"o}}1
{ä}{{\"a}}1
{ü}{{\"u}}1, #1
}}{}
% linksbündige Fußboten
\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}
\typearea{14} % typearea berechnet einen sinnvollen Satzspiegel (das heißt die Seitenränder) siehe auch http://www.ctan.org/pkg/typearea. Diese Berechnung befindet sich am Schluss, damit die Einstellungen oben berücksichtigt werden
\usepackage{scrhack} % Vermeidung einer Warnung
\begin{document}
\chapter{My first chapter}
\section{first}
\section{second}
\begin{chat}[caption={Greeting with hello},label={chat-greeting}]
Sadik: Hello
\end{chat}
As shown in \ref{chat-greeting} on page \pageref{chat-greeting} ...
\end{document}