
코드 목록에 캡션을 추가하는 한 가지 방법은 다음과 같습니다.
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\usepackage{caption}
\usepackage{float}
\newfloat{codelisting}{h}{lop}
\floatname{codelisting}{Listing}
\captionsetup[subfloat]{margin=0.5em}
\begin{document}
\begin{codelisting}
\caption{test}
test
\end{codelisting}
\end{document}
그러나 나는한다~ 아니다codelisting
매우 긴 목록에 대해 페이지 나누기를 보장하고 싶기 때문에 내 요소를 부동 소수점으로 만들고 싶습니다 .
나는 다음을 시도했다:
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\usepackage{caption}
\newenvironment{codelisting}{\captionsetup{type=listing}}{}
\begin{document}
\begin{codelisting}
\caption{test}
test
\end{codelisting}
\end{document}
하지만 오류가 발생했습니다.
LaTeX 오류: 카운터 '목록'이 정의되지 않았습니다.
LaTeX의 non-float 요소에 어떻게 캡션을 적용할 수 있나요? 특히 fancyvrb
및 fvextra
패키지를 사용하는 목록은 무엇입니까?
편집하다
@Skillmon의 의견에 대한 응답입니다. Pandoc은 \label
내부에 중첩되지 않으므로 \caption
시도한 내용은 다음과 같습니다.
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\usepackage{float}
\usepackage{caption}
\newfloat{codelisting}{h}{lop}
\floatname{codelisting}{Listing}
\renewenvironment{codelisting}
{\captionsetup{type=codelisting}}
{}
\begin{document}
text pre
\begin{codelisting}
\label{test}
\caption{test}
\VerbatimInput[breaknonspaceingroup, breaklines, breakanywhere]{verbatim.py}
\end{codelisting}
text post
AS shown in Listing \ref{test}
\end{document}
컴파일은 되지만 아래 이미지와 같이 참조가 확인되지 않습니다.
답변1
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\usepackage{float}
\usepackage{caption}
\newfloat{codelisting}{h}{lop}
\floatname{codelisting}{Listing}
\newenvironment{code}[2][]
{\captionof{codelisting}{#2}\ifx\relax#1\relax\else\label{#1}\fi}
{}
\begin{document}
\begin{code}{test}
test
\end{code}
foo
\begin{code}[lst:1]{testA} % with label
test
\end{code}
See Listing~\ref{lst:1}
\end{document}
답변2
귀하는 의견에서 제안한 내용을 수행할 수 없는 것 같으므로 다음은 내 의견에서 제안한 내용을 수행하는 답변입니다.
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\usepackage{float}
\usepackage{caption}
\newfloat{codelisting}{h}{lop}
\floatname{codelisting}{Listing}
\renewenvironment{codelisting}
{\captionsetup{type=codelisting}}
{}
\begin{document}
text pre
\begin{codelisting}
\caption{test}
some code
\end{codelisting}
text post
\end{document}
다음은 간격이 올바른 버전입니다(중첩하는 경우 간격이 올바른지 확인하지 않았습니다 \VerbatimInput
).
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\usepackage{float}
\usepackage{caption}
\newfloat{codelisting}{h}{lop}
\floatname{codelisting}{Listing}
\makeatletter
\renewenvironment{codelisting}
{%
\par
\vspace*{\intextsep}% vertical spacing as a float
\captionsetup{type=codelisting}%
}
{%
\par
\vspace*{\intextsep}% vertical spacing as a float
\@endpetrue % following text is only indented if blank line after \end
}
\makeatother
\begin{document}
text pre
\begin{codelisting}
\caption{test\label{code:works}}
some code
\end{codelisting}
text post \ref{code:works}
\end{document}
\label
내부에 중첩되지 않은 위의 출력을 얻기 위한 대체 입력 \caption
:
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{xcolor}
\usepackage{float}
\usepackage{caption}
\newfloat{codelisting}{h}{lop}
\floatname{codelisting}{Listing}
\makeatletter
\renewenvironment{codelisting}
{%
\par
\vspace*{\intextsep}% vertical spacing as a float
\captionsetup{type=codelisting}%
}
{%
\par
\vspace*{\intextsep}% vertical spacing as a float
\@endpetrue % following text is only indented if blank line after \end
}
\makeatother
\begin{document}
text pre
\begin{codelisting}
\caption{test}
\label{code:works}
some code
\end{codelisting}
text post \ref{code:works}
\end{document}
출력은 동일해 보입니다. 그러나 최적의 입력 구문은 \label
필수 인수에 중첩되어 있다는 점에 유의하십시오 \caption
. 출력이 동일해 보이지 않을 수 있는 경계선 경우가 있습니다.