なぜ newcommand がエラーを報告するのでしょうか?

なぜ newcommand がエラーを報告するのでしょうか?

1

\newcommand{\Qf}[3]{\paragraph{\[#1\]}#2\\#3\\}
...
\Qf[AA][AA][AA]

と書いてありますThere's no line here to end. \Qf[AA

2

\usepackage{etoolbox}
...
\csdef{Q1}{
    1.1.2-1992-2,3-1
}  
\csdef{Q1=}{
    $f(x)=e^{x^2},f[\varphi(x)]=1-x,\varphi(x) \geqslant 0,\varphi(x),D(\varphi(x))$
} 
\csdef{A1}{
    $e^{\varphi(x)^2}=1-x \Rightarrow \varphi(x)=\sqrt{\ln (1-x)}\Rightarrow x<1$
}
\newcommand{\toA}[1]{\hyperlink{answer-#1}{answer}\hypertarget{question-#1}{}}
\newcommand{\toQ}[1]{\hyperlink{question-#1}{back}\hypertarget{answer-#1}{}}

\toQ{\csuse{Q1}}
\csuse{Q1=}
\newpage
\toA{\csuse{Q1}}

それは言うUndefined control sequence. \toQ{\csuse{Q1}}、そしてUndefined control sequence. \toA{\csuse{Q1}}

3

\usepackage{etoolbox}
...
\csdef{Q1}{
    1.1.2-1992-2,3-1
}  
\csdef{Q1=}{
    $f(x)=e^{x^2},f[\varphi(x)]=1-x,\varphi(x) \geqslant 0,\varphi(x),D(\varphi(x))$
} 
\csdef{A1}{
    $e^{\varphi(x)^2}=1-x \Rightarrow \varphi(x)=\sqrt{\ln (1-x)}\Rightarrow x<1$
}
\newcommand{\toA}[1]{\hyperlink{answer-#1}{answer}\hypertarget{question-#1}{}}
\newcommand{\toQ}[1]{\hyperlink{question-#1}{back}\hypertarget{answer-#1}{}}


\Qf[\csuse{Q1}][\toA[\csuse{Q1}]][\csuse{Q1=}]

それは言うThere's no line here to end. \Qf[\csuse{Q1}

理由は分かりませんが、さまざまなエラー情報で本当に混乱しています。

答え1

1 つの投稿につき 1 つの質問のみをし、テスト ファイルを提供するのが最適ですが、次の点に注意してください。


1

\documentclass{article}

\begin{document}

\newcommand{\Qf}[3]{\paragraph{\[#1\]}#2\\#3\\}

\Qf[AA][AA][AA]

\end{document}

これによって、記載されているエラーやその他のエラーは生成されませんが、 の 3 つの引数は、、および\Qfです。[AA

\paragraphは、段落の最初の文にインラインで挿入されるランイン見出しを持つセクションコマンドです。そのため、\[\]見出しで表示数式を使用すると、とても奇妙ですが、この場合、表示は の[最初の 2 行と#2#3両方とも A で構成されるため、次のようになります。

ここに画像の説明を入力してください


2

どのようなエラーが発生したかは記載されておらず、テストファイルも提供されていません。

\documentclass{article}



\usepackage{etoolbox}

\begin{document}
\csdef{Q1}{
    1.1.2-1992-2,3-1
}  
\csdef{Q1=}{
    $f(x)=e^{x^2},f[\varphi(x)]=1-x,\varphi(x) \geqslant 0,\varphi(x),D(\varphi(x))$
} 
\csdef{A1}{
    $e^{\varphi(x)^2}=1-x \Rightarrow \varphi(x)=\sqrt{\ln (1-x)}\Rightarrow x<1$
}
\newcommand{\toA}[1]{\hyperlink{answer-#1}{answer}\hypertarget{question-#1}{}}
\newcommand{\toQ}[1]{\hyperlink{question-#1}{back}\hypertarget{answer-#1}{}}

\toQ{\csuse{Q1}}
\csuse{Q1=}
\newpage
\toA{\csuse{Q1}}
\end{document}

エラーが発生する

! Undefined control sequence.
\toQ #1->\hyperlink 
                    {question-#1}{back}\hypertarget {answer-#1}{}
l.20 \toQ{\csuse{Q1}}

?

ハイパーリンクが未定義であることを示します \hyperlink

\usepackage行を次のように変更する

\usepackage{etoolbox,hyperref}

そのエラーは解決されますが、次のエラーが発生します。

! Undefined control sequence.
\Q1= ...,f[\varphi (x)]=1-x,\varphi (x) \geqslant 
                                                  0,\varphi (x),D(\varphi (x...
l.21 \csuse{Q1=}

? 

\geqslant未定義なので、\usepackage行を次のように変更します。

\usepackage{etoolbox,amssymb,hyperref}

例がエラーなしで実行されます。


3

指定されたエラーが発生した例にフラグメントを拡張する方法を推測できませんでした。

\documentclass{article}



\usepackage{etoolbox,amssymb,hyperref}

\begin{document}

\newcommand{\Qf}[3]{\paragraph{\[#1\]}#2\\#3\\}

\csdef{Q1}{
    1.1.2-1992-2,3-1
}  
\csdef{Q1=}{
    $f(x)=e^{x^2},f[\varphi(x)]=1-x,\varphi(x) \geqslant 0,\varphi(x),D(\varphi(x))$
} 
\csdef{A1}{
    $e^{\varphi(x)^2}=1-x \Rightarrow \varphi(x)=\sqrt{\ln (1-x)}\Rightarrow x<1$
}
\newcommand{\toA}[1]{\hyperlink{answer-#1}{answer}\hypertarget{question-#1}{}}
\newcommand{\toQ}[1]{\hyperlink{question-#1}{back}\hypertarget{answer-#1}{}}


\Qf[\csuse{Q1}][\toA[\csuse{Q1}]][\csuse{Q1=}]
\end{document}

エラーが発生する

! Missing \endcsname inserted.
<to be read again> 
                   \protect 
l.24 \Qf[\csuse{Q1}
                   ][\toA[\csuse{Q1}]][\csuse{Q1=}]
? 

ここで の3つの引数はで\Qfあり[\csuse{Q1}

したがって、#2\\の置換テキストでは\Qfとなり\csuse\\、これはコマンドを\\の引数として受け取ります\csuseが、これは文字のリストに展開されないため、 csname を形成できず、\endcsname表示されている低レベルのエラーが発生します。

関連情報