我试图定义一个新的环境,在这个环境中,我需要在最终代码中有一个参数。多亏了这个邮政,我知道如果不使用技巧,这是不可能的。这就是为什么我在开始时定义了一个包含参数的命令,以便在最后使用它,但徒劳无功......有人可以向我解释原因和/或修复这个问题吗?
\newenvironment{newappendix}[2]%
{\def\headername{#1}%
\phantomsection%
\refstepcounter{section}%
\addcontentsline{toc}{section}{Appendix \thesection~- #1}%
\label{app:#2}}
{\fancyhead[R]{Appendix \thesection~- \headername}}
\headername
如果没有最后一行的命令,它也能正常工作,但是我需要这个参数,所以...该怎么办?
编辑这是一个 MWE(通过取消注释环境定义末尾的最后一行,您应该会收到错误......
\documentclass{report}
\usepackage[demo]{graphicx}
\usepackage{hyperref}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[L]{{\bfseries Appendices}}%
\setcounter{section}{0}%
\renewcommand{\thesection}{\Alph{section}}%
\newenvironment{newappendix}[2]%
{\def\headername{#1}%
\phantomsection%
\refstepcounter{section}%
\addcontentsline{toc}{section}{Appendix \thesection~- #1}%
\label{app:#2}}
{\fancyhead[R]{Appendix \thesection~-}}% \headername}}
\begin{document}
\begin{newappendix}{first}{1}
\includegraphics[width=12cm,height=15cm]{test}
\end{newappendix}
\end{document}
答案1
您应该使用 LaTeX 的标记功能,而不是环境。下面是我的做法。
\documentclass{report}
\usepackage[demo]{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{hyperref}
\fancyhead{}
\fancyhead[L]{\bfseries Appendices}
\fancyhead[R]{Appendix \rightmark}
\renewcommand{\thesection}{\Alph{section}}
\newcommand{\newappendix}[1]{%
\clearpage % or the mark could be wrong
\refstepcounter{section}%
\addcontentsline{toc}{section}{Appendix \thesection~- #1}%
\markright{\thesection \ -- #1}%
}
\begin{document}
\newappendix{first}\label{app:1}
\noindent\includegraphics[width=\textwidth,height=15cm]{test}
\newappendix{second}\label{app:2}
\noindent\includegraphics[width=\textwidth,height=15cm]{test}
\newappendix{third}\label{app:3}
\noindent\includegraphics[width=\textwidth,height=15cm]{test}
\newappendix{fourth}\label{app:4}
\noindent\includegraphics[width=\textwidth,height=15cm]{test}
\end{document}