ご質問はこちらへ
jsarticle のインストール方法
左寄せの数式環境内で中央に寄せたい
パッケージにおけるマクロ定義用マクロの使い分け
パッケージにおけるマクロ定義用マクロの使い分け
\defか、それとも\newcommandか\providecommandか\DeclareRobustCommandか、はたまた\NewDocumentCommandか\ProvideDocumentCommandか\DeclareDocumentCommandか
パッケージを書かれた経験のある方に質問です。 件名の通りなのですが、パッケージでのマクロ定義に以下のどれを使うのが適切なのかよくわからない場合があり、皆様の「使い分け方」をご教示いただきたいです。 ・ \def ・ \newcommand ・ \providecommand ・ \DeclareRobustCommand ・ \NewDocumentCommand ・ \ProvideDocumentCommand ・ \DeclareDocumentCommand など
各マクロの挙動の差異自体は概ね把握していますが、パッケージでマクロの定義をする場合の使い分け方がうまく理解できておらず、ぜひアドバイスを頂きたいです。
背景
背景としましては、研究室の後輩向けに、各種レポートや卒論、修論、博論等の論文など用のスタイルファイル(とその説明書)を作っているのですが、特に「少なくとも自分は知らないが、既存のパッケージで提供されているかもしれない」ような名前の新たなマクロを定義する際、どれを使うべきか悩んでいます。 当然、既存のパッケージで提供されていることが知られているマクロ名、例えば、\ruby のような名前であれば当然provide~系で定義すべきでしょうが… 「既存のパッケージで提供されていると聞いたことはないけど、名前がシンプルなので被る可能性も否定しきれない」というような名前の場合はどうすべきなのでしょうか。 ※例えば、\figref のような名前です。
無難にnew~系で定義して、被っていることがわかるようにするべきなのかなとも思いましたが、後輩にはLaTeX初心者が多く、エラーはなるべく出したくないのが本心です。 そこで、 ・ 被るということは、恐らく入れた他のパッケージで提供されているマクロの方を使用したいケースが多いであろうと予想し、こちらはprovide~系で定義する とも考えましたが、万が一意図せず他のパッケージを入れていた場合、「説明書にあるマクロを使ったら違う出力になった」のような問題も出てきそうです。 とはいえ、 ・ こちらが意図しない挙動を防ぐべく、\defやdeclare~系で半ば強引に定義してしまう というのもやや危険に感じてしまいます。
また、各分類のマクロ(new~系やprovide~系)のいずれかに決めたとしても、例えばprovide~系であれば ・ \providecommand と ・ \ProvideDocumentCommand のどちらを使用すべきかも迷います。当然xparseの\ProvideDocumentCommandでしかできない(ないし\ProvideDocumentCommandの方が実装が容易な)ケースなら迷わず\ProvideDocumentCommandを使用しますが、「どっちでも書ける」ような場合はどちらを使えばよいものなのでしょうか。 基本的に~DocumentCommandで統一して構わないでしょうか。
総括
私も初心者に毛が生えた程度であり、また他人が使うパッケージを書くのは初めてなため、煮詰まってしまっています。 ちょっとしたアドバイスでも十二分にありがたいので、上のような状況の場合 ・ new~系・provide~系・declare~系のどれを採用すべきか ・ 標準のマクロ定義用マクロと、xparseの~DocumentCommandの使い分け の2点について、いずれかだけでも構いませんので、是非ともご教示お願いいたします。
LuaLaTeX+jlreq での行末の句読点
さて、行末の句読点について、up+js、up+jlreq、Lua+ltjs、Lua+jlreq で試したところ、最初の3つは半角幅になったのに対し、Lua+jlreq だけが全角幅になりました。こちらも半角幅にするには、どう設定すべきでしょうか。
%\documentclass[uplatex]{jsarticle}\def\zw{zw}
%\documentclass[uplatex]{jlreq}
%\documentclass{ltjsarticle}
\documentclass[lualatex]{jlreq}
\begin{document}
\parbox{10\zw}{%
あいうえおかきくけ。こさしすせそたちつ、てとなにぬねの
はひふへほまみむめもやゆよらりるれろわをん。
}
\end{document}
VSC+Latexworkshopにてコンパイルしたpdfにepsが表示されない問題
VSC+LatexWorkshopにて環境構築しているのですが
コンパイルしたPDF内のEPSが表示されない問題が起きています
環境はWindows 11
TexはTexLive2022にてインストール
Ghost script 9.52+Gsview 5.0 共に 64bit
で構築しています.
他のPCでは全く同じ構成で正常にEPSが挿入されるのですが
新しくインストールしたPCのみ表示されません.
なお,TexWorksにてコンパイルを行うとepsの図が正常に表示されます.
以下VSCにてコンパイル時のログです.
=== TeX engine is 'e-pTeX'
Latexmk: applying rule 'dvipdf'...
For rule 'dvipdf', running '&do_viewfile( )' ...
test.dvi -> test.pdf
[1
dvipdfmx:warning: Filtering file via command -->rungs -q -dDELAYSAFER -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dAutoRotatePages=/None -dUseFlateCompression=true -sOutputFile='C:/Users/○○○○/AppData/Local/Temp/dvipdfm-x.0e43989b8cf3d85cab66746a260d5b66' './fig/robo_abst.eps' -c quit<-- failed.
dvipdfmx:warning: Image format conversion for "./fig/robo_abst.eps" failed...
dvipdfmx:warning: pdf: image inclusion failed for "./fig/robo_abst.eps".
dvipdfmx:warning: Failed to read image file: ./fig/robo_abst.eps
dvipdfmx:warning: Interpreting special command PSfile (ps:) failed.
dvipdfmx:warning: >> at page="1" position="(318.898, 328.423)" (in PDF)
dvipdfmx:warning: >> xxx "PSfile="./fig/robo_abst.eps" llx=0 lly=0 urx=267 ury=279 rwi=22"
][2]
27050 bytes written
Latexmk: Summary of warnings from last run of (pdf)latex:
Latex failed to resolve 3 reference(s)
Latexmk: All targets (test.dvi test.pdf) are up-to-date
Windows11
脚注が1つのときは番号を出力しない設定方法について
tasks環境が作動しない
上のページにあるソースコードをコピペしてもコンパイルできません。
\documentclass[dvipdfmx]{jsarticle} %ドキュメントクラスの指定
\usepackage{tasks} %tasksパッケージの読み込み
\settasks{counter-format=(\arabic*)} %「=」の後ろで箇条書きの記号を変更
%\settasks{label-width=18pt} %幅の調整(ローマ数字の時は%を外す)
\begin{document} %\begin{document}と\end{document}は絶対に忘れない
\begin{tasks}(4) %()の中で何カラムかを指定
\task 横
\task 向きに
\task 箇条書き
\task 作ろう
\end{tasks}
\end{document}
エラー内容:
Missing number, treated as zero.
\c@* \BAD.
l.11 \end{tasks}
また、ソースコード内のcounter-formatをlabelに変えてもおなじエラー内容が出ます。
なお、コンパイラーはpLaTeX(ptex2pdf)で、texlive2016を使用しています。(windows10)