sectionの再定義(引数2つ)

sectionの再定義(引数2つ)

- あ い の投稿
返信数: 9
TeX初心者です。
夜分遅くで申し訳ないのですが,新しくデザインしたsectionを定義する方法について質問させていただきます。

【目標】


(ソース)

\documentclass[dvipdfmx,fleqn]{jsarticle}

\usepackage[deluxe,jis2004]{otf}
\usepackage{xcolor,titlesec,ajmacros}
\usepackage[framemethod=tikz]{mdframed}
\renewcommand{\bf}[1]{\gtfamily\bfseries{#1}\rm{}}
\renewcommand{\gt}[1]{\gtfamily\mdseries{#1}\rm{}}

\begin{document}

\section{力学\ajMaru{2}}{力学的エネルギー保存の法則}

\end{document}

(出力)

\begin{tikzpicture}
\fill[gray](0,0)--(0,0.95)--(0.4,1.8)--(0.4,0.65)--cycle;
\fill[left color=lightgray,right color=white](0.1,0)--(16,0)--(16,0.65)--(0.5,0.65)--cycle;
\fill[left color=black!10!white,right color=white](0.5,0.75)--(16,0.75)--(16,1.8)--(0.5,1.8)--cycle;
\draw(0.5,0.65)node[right]{\bf{{\Huge 第18講 \scalebox{0.7}[1.2]{$\triangleright \triangleright \triangleright$}力学的エネルギー保存の法則}}};
\draw(0.6,1.5)node[right]{\underline{\gt{{\large \scalebox{0.7}[1.2]{$\blacktriangleright$} 力学 \ajMaru{2}}}}};
\end{tikzpicture}



以上の目標を達成するために,
http://abenori.blogspot.com/2018/05/titlesec.html
を参考に以下を書いてみました。



\titleformat{\section}[block]
{}
{hang}
{0pt}
{
\begin{tikzpicture}
\fill[gray](0,0)--(0,0.95)--(0.4,1.8)--(0.4,0.65)--cycle;
\fill[left color=lightgray,right color=white](0.1,0)--(16,0)--(16,0.65)--(0.5,0.65)--cycle;
\fill[left color=black!10!white,right color=white](0.5,0.75)--(16,0.75)--(16,1.8)--(0.5,1.8)--cycle;
\draw(0.5,0.65)node[right]{\gt{{\Huge 第\thesection講 \scalebox{0.7}[1.2]{$\triangleright \triangleright \triangleright$}
}
[
}}};
\draw(0.6,1.5)node[right]{\underline{\gt{{\large \scalebox{0.7}[1.2]{$\blacktriangleright$} }}}};
\end{tikzpicture}
]



しかしエラーが出てしまいコンパイルできません。
また,引数2つをどのように表現してよいかも分かりませんでした。
汚いコードで申し訳ありませんが,どなたか解決策をご教示願います。
(おそらくotfの太字設定に関してはみなさま環境は一様に違うと思いますので,状況に応じて全て\textbf{}にしてしまっていただいて構いません)
よろしくお願いいたします。
あ い への返信

Re: sectionの再定義(引数2つ)

- 和田 勇 の投稿

どのようなエラーが出ているのでしょうか?

ゴールに合わせると以下のパッケージ類の設定がないのでエラーになりますが

\usepackage{tikz}
\usetikzlibrary{intersections}
\usepackage{amsmath,amssymb}

これに関しては恐らく質問されるときの書き込みミスだと思いますので、 \section{力学\ajMaru{2}}{ ・・・ } だと以下のようなメッセージが出ていると思います。

! TeX capacity exceeded, sorry [input stack size=5000].
\reserved@a ->\def \reserved@a
                               *{\ttl@assign@i {\@tempskipb }}\reserved@a
l.28 \section{力学\ajMaru{2}}
                             {力学的エネルギー保存の法則}

この解消方法は、texmf.cnf の stack_size を通常変更しますが、30000 以上は指定できないようで、私には簡単に対処できそうにありません。

あるいは、titleformat のところでエラーになっているのでしょうか? 実現したいことは大体わかるのですが、記述されたものそのままでは、処理できずにエラーになってることも考えられます。

いずれにしても、お試しになっているソース及びできればそれをコンパイルした時のログファイルを添付していただくようお願いします。

叩き台を添付します

実現したいであろうことを推測してたたき台を作成しましたので添付したファ イルや を参考にしてください。ソース内で留意した点は以下の通り。

  • \section{力学\ajMaru{2}}{ ・・・ } は \renewcommand で引数を二つに変更して再定義しても良いですが、 \newcommand\SECTION[2]{ ・・・ } とし 内部から \section を呼び出すようにしました。
  • \SECTION で指定されるタイトル情報を \myttlone \myttltwo に代入し、それを \titleformat{\section} 内のtikzpicture で描画する際に参照
  • \SECTION 内部から \section をそのまま発行すると tikzpicture 内で描画されているタイトルと二重に表示されるので \section{} でタイトルを強制的に空っぽにする
  • \section{} では目次情報が空文字のものが出力されてしまうので \section[#2]{} としました
  • \titleformat{\section}[block] … だと \section[#2]{} の空行が tikzpicture の下に表示されてしまうので block を hang に変更

添付ファイル情報

adding: 2022-03-29/2022-03-29.aux (deflated 33%)
adding: 2022-03-29/2022-03-29.tex (deflated 61%)
adding: 2022-03-29/2022-03-29.pdf (deflated 9%)
adding: 2022-03-29/2022-03-29.log (deflated 78%)
和田 勇 への返信

Re: sectionの再定義(引数2つ)

- あ い の投稿
和田さま返信本当にありがとうございます。
以下,返答です。


▶︎パッケージについて
見直しができておらず,必要なパッケージを見落としていました。
わざわざお手数かけてしまったことをお詫び申し上げます。
▶︎エラー内容
和田さまのご提示いただいたものと全く同じエラーでした(CLOUD LATeXのまっさらな状態で試しましたのでlogファイルも同じだと思います)。
▶︎叩き台について
わざわざ作ってくださりありがとうございます。
拝見させていただいたところ一つ目の引数のタイトルが縦長になっていましたのでscaleboxで修正しました。
▶︎問題点
目次の点線が表示されません(subsectionは問題ないのですが)。
また,二つ目の引数の中に他のajMaruなどのコマンドを入れることができません。


内容がほとんどわからず的外れなことを申し上げているかもしれませんが,回答いただければ幸いです。
よろしくお願いします。
あ い への返信

Re: sectionの再定義(引数2つ)

- 和田 勇 の投稿

目次の点線( section )

これは「latex tableofcontents dot」などで検索すればいくつかヒットします。 その情報のまんまですが、以下に示した URL を参考にプリアンブルに追加。

    % https://www.reddit.com/r/LaTeX/comments/jhvf9y/no_dots_in_table_of_contents/
    % https://tex.stackexchange.com/questions/53898/how-to-get-lines-with-dots-in-the-table-of-contents-for-sections
    \makeatletter \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}} \makeatother

二つ目の引数の中に他のajMaruを使いたい

「TeX capacity exceeded, sorry [input stack size=5000].」だと思いますが、先に回答したように ajMaru 必須であれば私の手には負えません。

代替案として platex ではなく uplatex に変更が可能であれば、unicode で表現できる丸数字類(※1)であれば以下のように変更すれば比較的容易に対応は可能です。

(※1)https://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/u2460.html

    @@ -1,4 +1,4 @@
    -\documentclass[dvipdfmx,fleqn]{jsarticle}
    +\documentclass[uplatex, dvipdfmx,fleqn]{jsarticle}

     \usepackage{tikz}
     \usetikzlibrary{intersections}

    @@ -41,7 +47,7 @@
     aaaa

     aaaa
    -\SECTION{力学 \ajMaru{3}}{サンプル}
    +\SECTION{サンプル}{力学 ⓐ③}
     サンプル サンプル サンプル サンプル
     サンプル サンプル サンプル サンプル
     \end{document}
和田 勇 への返信

Re: sectionの再定義(引数2つ)

- あ い の投稿
和田 勇さま,素早い回答をありがとうございます。
目次の点線は無事解決いたしました。
ajMaruについてですが,これは直打ちの(1)で我慢しようと思います。
本当にありがとうございました!
あ い への返信

Re: sectionの再定義(引数2つ)

- 伊藤 直人 の投稿
あいさんへ
ajMaruが第2引数で使えない問題ですが添付のものでいかがでしょうか。
tcolorboxで似た物を作ってみました。
添付のファイルは、2022年 03月 30日(水曜日) 23:46に和田さんが投稿されているものをベースにしています。

お役に立てれば幸いです。
伊藤 直人 への返信

Re: sectionの再定義(引数2つ)

- あ い の投稿
伊藤 直人さま,返信ありがとうございます。
確かに丸つき数字が表示されており感動したのですが,よく見ると丸の中の色が背景色と合っていないことに気がつきました。
これはサイズを変更している(?)などの問題で文字の少し下の色が表示されているからでしょうか?
透明色の設定はないのかと調べてみましたが,ヒットしませんでした。
解消することは可能なのでしょうか?
ご返答くだされば幸いです。
あ い への返信

Re: sectionの再定義(引数2つ)

- 伊藤 直人 の投稿
あいさんへ
背景色を配慮するのをすっかり忘れていました。ごめんなさい
添付のものが修正したものです。
コマンド名を特に意味は、ありませんが\AJMARUから\ajmに変えてみました。

お役に立てれば幸いです。
伊藤 直人 への返信

Re: sectionの再定義(引数2つ)

- あ い の投稿
返信ありがとうございます。
ご提示いただいたソースで無事解決いたしました。
背景色の透明度をopacitybackで表すことができ,これはstandard jigsawというスキンキーでしか用いることができないということですね。
大変学びになりました。
ありがとうございました。
あ い への返信

Re: sectionの再定義(引数2つ)

- はやて (h20y6m) の投稿

\ajMaru 等の命令は \section の引数など入れる場所によっては \protect を前置しないとうまく動かないようです。

https://twitter.com/zr_tex8r/status/1208653484943216640