
나는 다음 문제를 해결할 만큼 LaTeX에 능숙하지 않습니다. 두 개의 매개변수를 사용하여 멋진 상자를 만들고 첫 번째 인수를 굵게 표시하고 두 번째 인수를 강조된 텍스트로 표시하는 매크로가 있습니다.
\newcommand{\Step}[2]{%
\noindent{\\[0pt] \rule{0pt}{0.5ex}%
\hspace*{1em}\fbox{\parbox[t]{0.92\columnwidth}{{\bfseries Step #1.\ }\emph{#2}}}}
\vspace*{1.1ex} }
나는 이 매크로를 텍스트에서 10-15번 호출합니다(이만큼 많은 단계가 있습니다). 이 매크로가 확장된 페이지를 참조할 수 있도록 라벨을 붙이고 싶습니다. 마지막 줄을 다음과 같이 변경하면:
\vspace*{1.1ex} \label{step:mode:#1} }
오류가 나타나기 시작합니다. 나는 전혀 관련이 없는 줄에서 이것을 얻습니다.
! Missing \endcsname inserted.
<to be read again>
\protect
l.160 ...aults Occur\relax }{figure.caption.52}{}}
이 줄은 아마도 일부 보조 파일에서 나온 것 같습니다.
첫 번째 인수를 올바르게 확장하고 레이블을 지정할 인수로 사용하는 방법은 무엇입니까? 첫 번째 인수에는 공백이 없으며 앞으로도 공백이 없습니다.
답변1
\textsuperscript
레이블을 설정하는 동안 재정의할 수 있습니다 . 여기에 \@firstofone
좋은 재정의가 있을 것입니다. 이 명령은 단순히 인수를 읽고 있는 그대로 사용합니다.
추가 \csname phantomsection\endcsname
로 패키지와 작업 링크를 갖는 것도 좋은 생각일 수 있습니다 hyperref
.
\documentclass{article}
\usepackage{lipsum}% for demonstration only
\usepackage{hyperref}% to show, that this works
\makeatletter
\newcommand{\Step}[2]{%
\par\noindent{\rule{0pt}{0.5ex}%
\csname phantomsection\endcsname
{\let\textsuperscript\@firstofone\label{#1}}%
\hspace*{1em}\fbox{\parbox[t]{\dimexpr \linewidth-2em-2\fboxsep-2\fboxrule\relax}{%
{\bfseries Step #1.\ }\emph{#2}}}}\par
\vspace*{1.1ex}
}
\makeatother
\begin{document}
\Step{R\textsuperscript{+}4.a}{blah, blah}
See R\textsuperscript{+}4.b on page \pageref{R+4.b}.
\lipsum
\Step{R\textsuperscript{+}4.b}{blah, blah}
See R\textsuperscript{+}4.a on page \pageref{R+4.a}.
\lipsum
\end{document}
\csname phantomsection\endcsname
가 사용 되지 않으면 단순히 \relax
이므로 거의 hyperref
아무것도 아닙니다.
답변2
나는 다른 방식으로 할 것입니다 :
\usepackage{calc}
\newcommand{\Step}[2]{%
\par\addvspace{1.1ex}
\noindent\hspace*{1em}\fbox{\parbox[t]{\columnwidth-2em-2\fboxsep-2\fboxrule}
{\textbf{Step #1.}\ \emph{#2}}}\label{step:mode:#1}\\*[1.1ex]}
이런 방식으로 은 \fbox
선의 중앙에 배치되고 그 전후에 동일한 공간을 갖게 됩니다(지금처럼 간격이 마음에 들지 않으면 간격을 수정하십시오).
레이블에는 공백이 허용되지만 악센트 문자나 명령은 허용되지 않습니다. 그러면 \Step{R\textsuperscript{+}4.a}{blah, blah}
반드시 문제가 생길 것입니다. 라고 하면 해결이 됩니다
\newcommand{\Step}[3]{%
\par\addvspace{1.1ex}
\noindent\hspace*{1em}\fbox{\parbox[t]{\columnwidth-2em-2\fboxsep-2\fboxrule}
{\textbf{Step #2.}\ \emph{#3}}}\label{step:mode:#1}\\*[1.1ex]}
이 문제가 있는 항목을 다음과 같이 호출합니다.
\Step[R+4.a]{R\textsuperscript{+}4.a}{blah, blah}
그때를 언급해
\pageref{R+4.a}