tasksを用いたナンバリング

tasksを用いたナンバリング

- 優樹 金澤 の投稿
返信数: 4
当方教育関係者です.教材作成中に実装したいものができたものの,
どうすればよいか分からなかったのでこちらを投稿いたしました.

以下の画像のように,普通は「(48)」のようなナンバリングをするものの,
特定の問題だけ「*(50)」のようにしたいのですが,
調べ方が悪いのかうまくいかず,
どなたかのお知恵を拝借したいと考えております.
以下は,現在作成中の教材のソースコード一部で,タイプセットはpLaTeXです.
よろしくお願いいたします.

\documentclass[dvipdfmx]{jsarticle}
\usepackage{amsmath,tasks}

\begin{document}

\settasks{counter-format=(\arabic*)}
\settasks{label-width=17pt}
\begin{tasks}
\task $\displaystyle\int_a^b f(x) dx =\displaystyle\int_a^b f(a+b-x) dx$を示せ. \task (1)を用いて,$I =\displaystyle\int_0^{\frac{\pi}{2}} \dfrac{\sin x}{\sin x+\cos x} dx$を求めよ.
\end{tasks}
\end{document}
添付 スクリーンショット (1).png
優樹 金澤 への返信

Re: tasksを用いたナンバリング

- TONE Kozaburo の投稿
コマンドプロンプトから、
texdoc tasks
して参照できる tasks-manual.pdf の 7ページには
\task[*(18)] のように任意のラベルを出力する方法が載っていました。
ただし、自動でナンバリング出来ませんね。
優樹 金澤 への返信

Re: tasksを用いたナンバリング

- Ryuta Kudo の投稿

以下のようにすると実現できるかと思います。コピペして確認してみてください。

なお、ソースで少し気になった点がいくつかありましたのでお伝えさせてください(以下のソース内にも記載してあります)。

  1. \settasks{counter-format=(\arabic*)}とされていますが、このcounter-formatは現在deprecatedとされています。代わりにlabelを使うとよいです。
  2. 毎回\displaystyleを発行するのであれば、\everymath{\displaystyle}としておいたほうがよいと思います。
  3. これは細かい部分ですが、非積分関数とdxの間にはthin spaceを入れると綺麗に組めます。毎回\,を自分で入れるより、derivativeパッケージなどを利用するのが便利ですので、検討してみてください。

なお、\settasksによるカスタマイズはdeprecatedとされるcounter-formatの変更以外は手を加えないようにしましたが、添付画像のようにしたいのであれば、label-widthをもう少し大きくしたうえで、label-align=rightにしておくと再現できます。

\documentclass[dvipdfmx]{jsarticle}
\usepackage{amsmath,tasks}

\everymath{\displaystyle}
% 毎回`\displaystyle`を発行するのであればこうしたほうがよいと思います

\settasks{label=(\arabic*)}
% `counter-format`はdeprecatedとされています

\settasks{label-width=17pt}

\begin{document}
\begin{tasks}
  \task $\int_a^b f(x) \, dx =\int_a^b f(a + b - x) \, dx$を示せ.
  % 被積分関数とdxとの間にはthin spaceを入れるとよいです
  % ただし毎回`\,`を挿入するよりderivativeパッケージなどを使ったほうが便利です
  %
  \task[\textasteriskcentered(\arabic{task})] 
  % `\arabic{...}`はカウンタをアラビア数字で出してくれます
  % これにより「*(2)」となります
 %
  \stepcounter{task}
  % カウンタ`task`のインクリメント
  %
  (1)を用いて,$I =\int_0^{\frac{\pi}{2}} \frac{\sin x}{\sin x + \cos x} \, dx$を求めよ.
\end{tasks}
\end{document}
優樹 金澤 への返信

Re: tasksを用いたナンバリング

- 優樹 金澤 の投稿
ご返信くださったお二方のお陰で無事解決いたしました.
一応完成後のソースコードと画像を載せておきます.
ありがとうございました!

@Kozaburoさん
ご返信ありがとうございました!
やはり自動でナンバリングする機能を実装したかったのですが,他の方の投稿を参考にすると,
\task[*(\arabic{task})] で上手くいくようでした.

@Kudoさん
丁寧なご返信ありがとうございました.
ソースコードの添削までしていただけて幸いです.
・tasks-manual.pdf のわりと初めの方に,counter-formatはdeprecatedされていると書いてありました(汗)
・自分は普段,ceo.styというパッケージ(大学への数学の安田亨先生が作られた?)を使用しているので,
\intで自動的に\displaystyle\intなどとなっております!
・derivativeパッケージの方もすぐ試そうかと思います.

\documentclass[dvipdfmx]{jsarticle}
\usepackage{amsmath,setspace,ceo,tasks}
\usepackage [top=25truemm,bottom=25truemm,left=15truemm,right=15truemm] {geometry}
\newcommand{\sinx}{\sin x} \newcommand{\cosx}{\cos x} \newcommand{\tanx}{\tan x}
\newcommand{\sint}{\sin t} \newcommand{\cost}{\cos t} \newcommand{\tant}{\tan t}
\newcommand{\logx}{\log x} \newcommand{\logt}{\log t}

\begin{document}

\settasks{label= (\arabic*)}
\settasks{label-width=18.5pt}
\settasks{label-align=left}
\begin{spacing}{2}
\begin{tasks}(3)
\task
$\int_1^3 -(x-1)(x-3) dx$
\task
$\int_{\sfrac{1}{2}}^{\sfrac{3}{2}} (2x-1)(2x-3) dx$
\task[(\arabic{task})\dag]
\stepcounter{task}
$\int_0^4 \dfrac{1}{x^2-2x+4} dx$
\task
$\int_0^1 \dfrac{4dx}{(x+1)(x+2)(x+3)}$
\task %5
$\int_0^1 \dfrac{1}{(x^2+1)^2} dx$
\task[(\arabic{task})\dag]
\stepcounter{task}
$\int_0^{\sfrac{\pi}{2}} x^2\cosx dx$
\task[(\arabic{task})\dag]
\stepcounter{task}
$\int_0^{\sfrac{\pi}{2}} e^{x}\sinx dx$
\task
$\int_0^{\sfrac{\pi}{2}} e^{2x}\cosx dx$
\task
$\int_0^{\sfrac{\pi}{3}} \sin^2x\cos^2x dx$
\task %10
$\int_0^{\sfrac{\pi}{3}} \dfrac{1}{\cosx} dx$
\task
$\int_0^{\sfrac{\pi}{2}} \cos^5x dx$
\task
$\int_0^{2\pi} \sqrt{1-\cosx} dx$
\task
$\int_0^{\sfrac{\pi}{2}} \dfrac{1}{1+\cosx} dx$
\task[(\arabic{task})\dag]
\stepcounter{task}
$\int_0^1 \dfrac{1}{e^x+1} dx$
\task[(\arabic{task})\dag]
\stepcounter{task} %15
$\int_0^1 x\sqrt{1-x^2} dx$
\task
$\int_0^1 x^2\sqrt{1-x^2} dx$
\task
$\int_1^{\sfrac{3}{2}} \sqrt{2x-x^2} dx$

\end{tasks}
\end{spacing}

\end{document}
添付 スクリーンショット 2023-07-05 104432.png
優樹 金澤 への返信

Re: tasksを用いたナンバリング

- Ryuta Kudo の投稿

丁寧な返信ありがとうございます。

たいへん綺麗に組めていると思います。良い教材になりそうですね。

なお、

\task[(\arabic{task})\dag]
\stepcounter{task}

はひとつのコマンドにしてあげると良いと思います。

その方が入力も楽になりますし、万が一「やはり*(10)のような形式にしよう」となっても、コマンドの定義だけ書きかえればよいので修正が容易になります。