새로운 환경에서 라벨을 정의하는 방법은 무엇입니까?

새로운 환경에서 라벨을 정의하는 방법은 무엇입니까?

글쓰기 연습을 위한 새로운 환경을 정의하고 싶습니다. \ref또한 , \nameref( hyperref패키지 포함)을 사용하여 운동 번호와 이름 테이블을 만들고 싶습니다 . 다음 파일을 작성했습니다. 잘 작동 \ref하지만(운동 번호가 표시됨) \nameref운동 이름 대신 섹션 이름이 표시됩니다.

\documentclass{article}
\usepackage{hyperref}

\newcounter{exo}
\newenvironment{exo}[1]%
{\refstepcounter{exo}\vspace{0.5cm}\noindent
{\begin{large}\bfseries{Exercice \theexo~: #1} \end{large}} \par}
{\par\vspace{0.5cm}}

\begin{document}
A small example

\section{First degree}
\begin{exo}{First degree equation}\label{exo:first_degree}
Solve the equation~:\[ x+7 = -9 \: . \]
\end{exo}

\section{Second degree}
A little harder\ldots

\begin{exo}{Second degree equation}\label{exo:second_degree}
solve the equation~:\[ x^2 - 2x -3 =0 \: . \]
\end{exo}

\begin{exo}{Another exercise}\label{exo:other_exercise}
solve this equation:\[ -3x^2 +7x-64=0 \: .\]
\end{exo}

And here is a table of the exercices:

\begin{tabular}{|c | c|}
\hline
Number & tile \\
\ref{exo:first_degree} & \nameref{exo:first_degree}\\
\ref{exo:second_degree} &\nameref{exo:second_degree}\\
\ref{exo:other_exercise} &\nameref{exo:other_exercise}\\
\hline
\end{tabular}

\end{document}

답변1

\documentclass{article}
\usepackage{hyperref}

\newcounter{exo}
\makeatletter
\newenvironment{exo}[1]%
{\refstepcounter{exo}%
\protected@edef\@currentlabelname{#1}% addition here
\vspace{0.5cm}\noindent
{\large\bfseries{Exercice \theexo~: #1} \par}
{\par\vspace{0.5cm}}}
\makeatother

\begin{document}
A small example

\section{First degree}
\begin{exo}{First degree equation}\label{exo:first_degree}
Solve the equation~:\[ x+7 = -9 \: . \]
\end{exo}

\section{Second degree}
A little harder\ldots

\begin{exo}{Second degree equation}\label{exo:second_degree}
solve the equation~:\[ x^2 - 2x -3 =0 \: . \]
\end{exo}

\begin{exo}{Another exercise}\label{exo:other_exercise}
solve this equation:\[ -3x^2 +7x-64=0 \: .\]
\end{exo}

And here is a table of the exercices:

\begin{tabular}{|c | c|}
\hline
Number & tile \\
\ref{exo:first_degree} & \nameref{exo:first_degree}\\
\ref{exo:second_degree} &\nameref{exo:second_degree}\\
\ref{exo:other_exercise} &\nameref{exo:other_exercise}\\
\hline
\end{tabular}

\end{document}

관련 정보