
私は以下の問題を解決できるほど LaTeX に精通していません。2 つのパラメータを受け取り、適切なボックスを作成し、最初の引数を太字にし、2 番目の引数を強調テキストにするマクロがあります。
\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}