自前マクロで展開できないコマンドのエラー

前提

TeXで3つの引数を取るマクロを定義しようとしています。
第2引数は必須で、第1引数と第3引数は任意です。

形式は以下の通りです。

tex

\blank[#1]{#2}[#3]

これをdocumentブロックで使うとエラーは出ませんが、\sectionの引数の中などで使うとエラーが出ます。
エラーを出さないようにするためにはどうすればいいのでしょうか。

実現したいこと

例えば以下のように書いてもエラーが出ないようにする。

tex

\section{\blank[#1]{#2}[#3]}

発生している問題・エラーメッセージ

33: Argument of \@sect has an extra }. <inserted text> \par l.33 \section{\blank{100pt}} Runaway argument? {\normalfont \Large \headfont \raggedright }{\@blank }\def \reserved@b \ETC. 33: Paragraph ended before \@sect was complete. <to be read again> \par l.33 \section{\blank{100pt}}

該当のソースコード

tex

\documentclass[uplatex]{jsarticle} \makeatletter \def\blank{% \@ifnextchar[{% \@blank% }{% \@blank[]% }%} \def\@blank[#1]#2{% \@ifnextchar[{% \@@blank[#1]{#2}% }{% \@@blank[#1]{#2}[]% }%} \def\@@blank[#1]#2[#3]{% \underline{#1\hspace{#2}#3}%} \makeatother \begin{document} \blank{100pt} \\ \blank{100pt}[suffix] \\ \blank[prefix]{100pt} \\ \blank[prefix]{100pt}[suffix] \\\end{document}

試したこと

tex

\section{{\blank{100pt}}}

このように波カッコで囲ってみても変わりませんでした。

tex

\newcommand{\bbb}{\blank{100pt}}\section{\bbb}

このように一度マクロにまとめても変わりませんでした。

tex

\def\temp[#1]#2[#3]{% \underline{#1\hspace{#2}#3}%}

このように最終的な形のマクロだけ取り出して使うと、エラーは出ませんでした。

補足情報(FW/ツールのバージョンなど)

Windows10

This is ptex2pdf[.lua] version 20200520.0.
This is e-upTeX, Version 3.141592653-p3.9.0-u1.27-210218-2.6 (utf8.uptex) (TeX Live 2021/W32TeX) (preloaded format=uplatex)
\write18 enabled.
pLaTeX2e <2021-06-01u04>+2 (based on LaTeX2e <2021-11-15>)
L3 programming layer <2021-11-22> (c:/texlive/2021/texmf-dist/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2021/06/28 jsclasses (okumura, texjporg)

コメントを投稿

0 コメント