質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

Q&A

解決済

1回答

383閲覧

再定義された\@seccntformatが\sectionに展開されたとき、Undefined control sequence.が発生する

退会済みユーザー

退会済みユーザー

総合スコア0

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

0グッド

0クリップ

投稿2023/05/04 14:54

実現したいこと

  • \@seccntformatを再定義することで、\section{}のセクション番号を角丸長方形で囲む

エラーメッセージ

20行1列

1Undefined control sequence. 2\roundbox ...picture}[baseline=(char.base)] \node

該当のソースコード

LaTeX

1\documentclass[lualatex]{jlreq} 2\usepackage{tikz} 3 4\newcommand{\roundbox}[1]{% 5 \begin{tikzpicture}[baseline=(char.base)] 6 \node[draw, rounded corners=2pt, inner sep=2pt] (char) {#1}; 7 \end{tikzpicture}% 8} 9 10\makeatletter 11\renewcommand{\@seccntformat}[1]{\roundbox{\csname the#1\endcsname\quad}} 12\makeatother 13 14\begin{document} 15\roundbox{\thesection} 16\makeatletter 17\@seccntformat{section} 18\makeatother 19\section{Introduction} 20This is the introduction section. 21\end{document} 22

試したこと

第15行で\roundbox{\thesection}なら正しくコンパイルされることを、16-18行で\@seccntformat{}単体では正しく(書き換えられたコマンドが)展開されることを確認しました。\section{Introduction}に展開された\nodeにかぎってUndefined control sequence.が発生する理由と解決策を教えていただきたく思います。(また、未定義とされているcontrol sequenceは\nodeで正しいでしょうか。)

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

ビルドのコマンド:

lualatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder -output-directory="..." -synctex=1 -interaction=nonstopmode "main.tex"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

\node を \protect することで回避できるようです。

LaTeX

1\newcommand{\roundbox}[1]{% 2 \begin{tikzpicture}[baseline=(char.base)] 3 \protect\node[draw, rounded corners=2pt, inner sep=2pt] (char) {#1}; 4 \end{tikzpicture}% 5}

もしくは、\renewcommand の代わりに \protected\def を使う方法もあります。

LaTeX

1\makeatletter 2\protected\def\@seccntformat#1{\roundbox{\csname the#1\endcsname\quad}} 3\makeatother

xnewcommand パッケージをを使えば \renewcommand でも同様のことは可能なようです。

https://ctan.org/pkg/xnewcommand

投稿2023/05/05 08:49

nekotail

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問