环境技巧结束时的争论不起作用

环境技巧结束时的争论不起作用

我试图定义一个新的环境,在这个环境中,我需要在最终代码中有一个参数。多亏了这个邮政,我知道如果不使用技巧,这是不可能的。这就是为什么我在开始时定义了一个包含参数的命令,以便在最后使用它,但徒劳无功......有人可以向我解释原因和/或修复这个问题吗?

\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}

相关内容