我正在编写一个使用该verbatim
包的包。
\RequirePackage{verbatim}
对于文档,我使用的是ltxdoc
类。所以我必须%
在文档的每一行前面放一个字符。此外,当我使用环境vebatim
排版代码示例时,例如
% \begin{verbatim}
% Some Code
% Some other code
% \end{verbatim}
ltxdoc
删除%
每行开头的所有内容,包括verbatim
环境内部的所有内容。
似乎包从类中verbatim
重新定义了特殊环境,因为当我写verbatim
ltxdoc
% \begin{verbatim}
% some code example
% some other code example
% \end{verbatim}
%
生成的 PDF 中仍然存在之前Some code
和之前的内容Some other code
。因此,PDF 输出为
% some code example
% some other code example
但它应该是
some code example
some other code example
谁能帮我解决这个问题?
最小工作示例(MWE)
这是该文件的 MWE .dtx
。
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{exercises}[2014/04/22 v1.0 .dtx exercises file]
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage{exercises}
\begin{document}
\DocInput{exercises.dtx}
\end{document}
%</driver>
% \fi
% \GetFileInfo{exercises.sty}
% \title{The \textsf{exercises} package\thanks{This document
% corresponds to \textsf{exercises}~\fileversion, dated \filedate.}}
% \author{Roger Jud}
%
% \maketitle
%
% \begin{verbatim}
% \begin{exercise}
% Calculate $1 + 1 =$
% \end{exercise}
% \end{verbatim}
%
% \StopEventually{\PrintChanges\
%
% \begin{macrocode}
\RequirePackage{verbatim}
\newenvironment{exercises}{Start}{End}
% \end{macrocode}
% \Finale
\endinput
答案1
据我所知,环境verbatim
不支持像 DTX 文件格式那样以百分号字符作为行首。可以采取以下解决方法:
环境
verbatim
写法不带百分比前缀:\begin{verbatim} \begin{exercise} Calculate $1 + 1 =$ \end{exercise} \end{verbatim}
docstrip
可以通过使用未使用的保护来避免包含在生成的文件中:%<*verb> \begin{verbatim} \begin{exercise} Calculate $1 + 1 =$ \end{exercise} \end{verbatim} %</verb>
但是,这种保护会干扰文档的设置。这可以通过元注释来解决,元注释也用于将驱动程序部分从文档中排除:
% \iffalse %<*verb> % \fi \begin{verbatim} \begin{exercise} Calculate $1 + 1 =$ \end{exercise} \end{verbatim} % \iffalse %</verb> % \fi
完整示例:
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{exercises}[2014/04/22 v1.0 .dtx exercises file]
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage{exercises}
\begin{document}
\DocInput{exercises.dtx}
\end{document}
%</driver>
% \fi
% \GetFileInfo{exercises.sty}
% \title{The \textsf{exercises} package\thanks{This document
% corresponds to \textsf{exercises}~\fileversion, dated \filedate.}}
% \author{Roger Jud}
%
% \maketitle
%
% \iffalse
%<*verb>
% \fi
\begin{verbatim}
\begin{exercise}
Calculate $1 + 1 =$
\end{exercise}
\end{verbatim}
% \iffalse
%</verb>
% \fi
%
% \StopEventually{\PrintChanges}
%
% \begin{macrocode}
\RequirePackage{verbatim}
\newenvironment{exercises}{Start}{End}
% \end{macrocode}
% \Finale
\endinput
包裹listings
如果您考虑使用包listings
,那么您可以保留百分比前缀,因为listings
它可以从行首吞噬字符。以下示例使用 egreg 的逐字设置回答提问“我怎样才能让 lstlisting 看起来和逐字逐句的完全一样?”并补充道gobble=2
:
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{exercises}[2014/04/22 v1.0 .dtx exercises file]
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage{exercises}
\usepackage{listings}
\lstnewenvironment{dtxverblisting}{%
\lstset{
gobble=2,
basicstyle=\ttfamily,
columns=fullflexible,
keepspaces=true,
}%
}{}
\begin{document}
\DocInput{exercises.dtx}
\end{document}
%</driver>
% \fi
% \GetFileInfo{exercises.sty}
% \title{The \textsf{exercises} package\thanks{This document
% corresponds to \textsf{exercises}~\fileversion, dated \filedate.}}
% \author{Roger Jud}
%
% \maketitle
%
% \begin{dtxverblisting}
% \begin{exercise}
% Calculate $1 + 1 =$
% \end{exercise}
% \end{dtxverblisting}
%
% \StopEventually{\PrintChanges}
%
% \begin{macrocode}
\RequirePackage{verbatim}
\newenvironment{exercises}{Start}{End}
% \end{macrocode}
% \Finale
\endinput