ご質問はこちらへ
\renewcommandと\RenewDocumentCommandで挙動が変わるのはなぜでしょうか?
\renewcommand
と\RenewDocumentCommand
で挙動が変わるものがあり、理由がよくわからず気になっています。
再現できると思われる最小のソースを以下に示します。所望の出力は添付PDFのものです。
\renewcommand
を使った際† は\ref
を用いて「Listing 1.1に示す」「Listing 2.1に示す」と望み通り参照できるものの、\RenewDocumentCommand
を使った際†† は\ref
すると「Listing 1.0に示す」「Listing 2.0に示す」と番号がおかしくなってしまいます。
† \renewcommand{\thelstlisting}{\arabic{section}.\arabic{lstlisting}}
とした際
†† \RenewDocumentCommand\thelstlisting{}{\arabic{section}.\arabic{lstlisting}}
とした際
ひとまず\RenewDocumentCommand
ではなく\renewcommand
を使うことで対処していますが、この挙動の違いの理由が気になります。
理由がお分かりの方いらっしゃいましたら、ぜひご教示お願いします。
※ \AtBeginDocument
内の記述はhttps://ta-b0.hateblo.jp/entry/2020/08/13/001223
を参考にしました。
\documentclass{jlreq}
\usepackage{listings}
\makeatletter
\AtBeginDocument{
\renewcommand{\thelstlisting}{\arabic{section}.\arabic{lstlisting}} % うまくいく
% \renewcommand{\thelstlisting}{\arabic{section}.\protect\arabic{lstlisting}} % うまくいかない
% \RenewDocumentCommand\thelstlisting{}{\arabic{section}.\arabic{lstlisting}} % うまくいかない
\@addtoreset{lstlisting}{section}
}
\makeatother
\begin{document}
\section{hoge}
Listing~\ref{list:hoge}に示す。
\begin{lstlisting}[caption=hoge,label=list:hoge]
print("Hello, LaTeX!")
\end{lstlisting}
\section{fuga}
Listing~\ref{list:fuga}に示す。
\begin{lstlisting}[caption=fuga,label=list:fuga]
print("Oh, TeX...")
\end{lstlisting}
\end{document}
(LuaLaTeX)
索引の表示場所の変更
ハードウエア: MacBook Air, Apple M2、
OS:macOS Ventura 13.4.1、
TeX: pdfTeX 3.141592653-2.6-1.40.25 (TeX Live 2023)
【ご相談内容】
ご存知の通り、\usepackage{makeidx}や\usepackage{imakeidx}で
索引を作成すると論文の最終ページに表示されます。
これを別ページに挿入することは可能でしょうか?
具体的は序章と2章の間に、論文中で使用される記号の
索引一覧を表示できたらと考えています。
どなたか方法をご存知でした教えて頂けると助かります。
LuaTeX の OTF で小塚フォントを指定する方法
当方の環境は Windows 10 で,Acrobat Pro 2020 を所有しております.
最近まで角藤先生の W32-TeX を使っており,そこでは
https://okumuralab.org/tex/mod/forum/discuss.php?d=866
の通りに map ファイルを指定し,小塚フォントを用いて \ajMaruKaku{1} などを出力できておりました.
さて,最近 TeX Live をインストールし,LuaLaTeX に切り替え始めました.ここでOTFパッケージを使うには
\usepackage{luatexja-otf}
を書けばよい,ということは分かったのですが,どうすれば小塚フォントを指定できるのでしょうか.
\usepackage[kozuka-pr6n,deluxe]{luatexja-preset}
と書いてみましたが,
Package fontspec Error: The font "KozMinPr6N-Bold" cannot be found.
等のエラーが出て,ダメでした.
LuaTeX は dvipdfmx を介さないとどこかで読みましたため上記の map ファイルの類は何もいじっておりませんが,何か設定が必要なのでしょうか.
もし何らかの設定が必要ならば,その設定とはどこを見れば分かるのか,お教えいただけませんでしょうか.
以上,ご存じの方,よろしくご教示お願い致します.山下
unicode-mathを読み込むと添え字の付く位置が変わるのはなぜでしょうか?
unicode-math
を読み込むときと読み込まないときとで、添え字の付く位置が変わるのが気になります。
添え字の付く位置が変わるのはなぜなのでしょうか。
なお、添え字の位置の違いはLuaLaTeXで
\documentclass{ltjsarticle}
\usepackage{amsmath,amssymb}
% \usepackage{unicode-math}
\begin{document}
\begin{equation}
\int_{0}^{\infty} \quad \sum_{i = 0}^{n}
\end{equation}
\end{document}
の3行目(\usepackage{unicode-math}
)をコメントアウトしたものと、コメントアウトしないものを処理した際の出力を比べることで把握できるはずです。
よろしくお願いします。
セクション毎における \pagenumbering の挙動について
\section
の度に \pagenumbering
でページ番号のスタイルを変更するようなドキュメントを作成しました。(\clearpage
の挙動を検証したくて遊んでいました)
MWE として次のようなドキュメントを作成しました。文章は lipsum パッケージと同等の文章です。
実行環境:
- Windows 11
- LuaLaTeX
- TeX Live 2023
このドキュメントをタイプセットすると、§ 1 Arabic のあるページ番号はアラビア数字で表示され、§ 2 Alph のあるページ番号はラテン文字で表示されることを期待していました。
しかし、実際には全てのページ番号がラテン文字で表示されてしまいます。
\documentclass{article}
\begin{document}
\section{Arabic}
\pagenumbering{arabic}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu massa.
Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis. Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor vitae risus porta vehicula.
Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
% Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non, pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
% Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
\section{Alph}
\pagenumbering{Alph}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu massa.
Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis. Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor vitae risus porta vehicula.
Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non, pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
\end{document}
いくつかのパターンを試す中で、以下の事実が判明しています。
- LaTeX エンジンには依存しない
- 他のドキュメントクラスでも、文章量を調整して § 2 がページが改まってから始まるようにすると同様の問題が発生する
\pagenumbering{Alph}
を\thispagestyle{empty}
としても 1 ページ目に影響が生じる
この問題の解決方法としては、2 つ見つけることが出来ました。
- § 1 がページ末で終わらないようにする(コメントアウトしている § 1 の最後の 2 行を挿入すると問題は解消されます)
\section{Alph}
の前で\clearpage
する
今回この質問で知りたいことは、以下の点です。
- 上で挙げた方法以外に、この問題を解消する方法があるか
- この問題はどうして発生しているのか
検索方法が良くないのかもしれませんが、この問題と類似する問題を提起している人を見つけることは出来ませんでした。
どうぞよろしくお願いいたします。
VScodeでのコンパイルができません
VScodeでLatexの文章をコンパイル、PDFビューワを開こうとしてもうまくいきません。Windows11でtexlive2023を使用しています。tex文章をコンパイルしようとすると、以下のようなエラーメッセージが表示されるのですが、対処方法がわかりません。
Latexmk: If appropriate, the -f option can be used to get latexmk
to try to force complete processing.
Initial Win CP for (console input, console output, system): (CP932, CP932, CP932)
I changed them all to CP932
Rc files read:
NONE
No specific requests made, so using default for latexmk.
Latexmk: Nothing to do for 'c:/Users/yufukushima/.vscode/workspace/report.tex'.
Collected error summary (may duplicate other messages):
latex: gave an error in previous invocation of latexmk.
C:\texlive\2023\bin\windows\runscript.tlu:921: command failed with exit code 12:
perl.exe c:\texlive\2023\texmf-dist\scripts\latexmk\latexmk.pl -silent -outdir=out c:/Users/yufukushima/.vscode/workspace/report
パソコンに関して知識が少なく、解決することができませんでしたのでお手数をおかけしますが回答していただけると幸いです。
tasksを用いたナンバリング
どうすればよいか分からなかったのでこちらを投稿いたしました.
以下の画像のように,普通は「(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}

マークテスト作成に当たって「marksheet.sty」の導入
Win10,TeXLive2023,TeXWorks(pLaTeX(ptex2pdf))
質問内容
マーク式テストを作成中です。今までは手打ちで「ア」と入力したものを枠囲みしていたのですが、調べてみると「marksheet.sty」という希望通りのものを公開されている方がおり、早速導入してみたのですが、エラーが出てしまい、うまくいきません。どこが間違っているのか、ご指摘いただければと思います。
導入手順
1.公開されているコードをメモ帳にコピペ、UTF-8で保存した後「marksheet.sty」とファイル名を変更
2.styファイルをtexファイルと同フォルダ内に保存
3.下記texファイルを実行→エラー
texファイルの中身
\documentclass{jsarticle}
\usepackage{amsmath}
\usepackage{marksheet}
\begin{document}
\markbox{10}
$(x+1)(x-10) = 0 \Leftrightarrow x= \markbox[label]{2}, \markbox[label2]{2}$である.
ただし$\refhosomarkbox[label]{2} < \refhosomarkbox[label2]{2}.$
\end{document}
marksheet.styの中身
%
% marksheet.sty
%
% 使用例:
% \usepackage{marksheet}
%
% $(x+1)(x-10) = 0 \Leftrightarrow x= \markbox[label]{2}, \markbox[label2]{2}$である.
%
% ただし $\refhosomarkbox[label]{2} < \refhosomarkbox[label2]{2}.$
%
% また $2^{\refhososemamarkbox[label]{2}} = \frac{\markbox{1}}{\markbox{1}}, 2^{\refhososemamarkbox[label2]{2}} = \markbox{4}$である.
%
\usepackage{ifthen}
\def\@katakana#1{\ifcase#1 京\or ア\or イ\or ウ\or エ\or オ\or カ\or キ\or ク\or ケ\or コ\or サ\or シ\or ス\or セ\or ソ\or タ\or チ\or ツ\or テ\or ト\or ナ\or ニ\or ヌ\or ネ\or ノ\or ハ\or ヒ\or フ\or ヘ\or ホ\or マ\or ミ\or ム\or メ\or モ\or ヤ\or ユ\or ヨ\or ラ\or リ\or ル\or レ\or ロ\or ワ\or ヲ\or ン\else\@ctrerr\fi}
\def\katakana#1{\expandafter\@katakana\csname c@#1\endcsname}%アイウエオ
\newcounter{countermark}
\setcounter{countermark}{0}
\newcounter{tempcountermark}
\setcounter{tempcountermark}{0}
\newcounter{itermark}
\setcounter{itermark}{0}
\newcommand{\resetmark}[0]{\setcounter{countermark}{0}}
\newcommand{\markboxletter}[2][]{\refstepcounter{countermark}\ifx{#1}{}{}\else{\label{#1}}\fi\katakana{countermark}\setcounter{itermark}{1}\whiledo{\value{itermark}<#2}{\refstepcounter{countermark}\katakana{countermark}\addtocounter{itermark}{1}}}
\newcommand{\refmarkboxletter}[2][]{\setcounter{tempcountermark}{\ref{#1}}\setcounter{itermark}{0}\whiledo{\value{itermark}<#2}{\katakana{tempcountermark}\refstepcounter{tempcountermark}\addtocounter{itermark}{1}}}
\newcommand{\waku}[1]{\fboxrule=1.0pt \fboxsep=2.1pt \fbox{\ \bf{#1}\ }}
\newcommand{\hosowaku}[1]{\fboxrule=0.5pt \fboxsep=2.5pt \fbox{\ {#1}\ }}
\newcommand{\semawaku}[1]{\fboxrule=1.0pt \fboxsep=0.8pt \fbox{\bf{#1}}}
\newcommand{\hososemawaku}[1]{\fboxrule=0.5pt \fboxsep=1.0pt \fbox{#1}}
\newcommand{\markbox}[2][]{\waku{\markboxletter[#1]{#2}}}
\newcommand{\refmarkbox}[2][]{\waku{\refmarkboxletter[#1]{#2}}}
\newcommand{\hosomarkbox}[2][]{\hosowaku{\markboxletter[#1]{#2}}}
\newcommand{\refhosomarkbox}[2][]{\hosowaku{\refmarkboxletter[#1]{#2}}}
\newcommand{\semamarkbox}[2][]{\semawaku{\markboxletter[#1]{#2}}}
\newcommand{\refsemamarkbox}[2][]{\semawaku{\refmarkboxletter[#1]{#2}}}
\newcommand{\hososemamarkbox}[2][]{\hososemawaku{\markboxletter[#1]{#2}}}
\newcommand{\refhososemamarkbox}[2][]{\hososemawaku{\refmarkboxletter[#1]{#2}}}
エラー内容
! Missing number, treated as zero.
<to be read again>
\xparse function is not expandable
l.7 ただし$\refhosomarkbox[label]{2}
< \refhosomarkbox[label2]{2}.$
texファイル、styファイルをまとめたものを添付しております。
どうかお力をお貸しください。よろしくお願いいたします。