λ€μ MCEμμ λ³Ό μ μλ―μ΄ ν΄λμ€ λ©μμ§λ "ν¨ν€μ§" λ©μμ§λΌκ³ μ£Όμ₯λ©λλ€.
\begin{filecontents*}[overwrite]{myclass.cls}
\ProvidesExplClass
{myclass}
{2021/04/26}
{0.1}
{
My Nice Class
}
\NeedsTeXFormat{LaTeX2e}
\LoadClass { article }
%
\msg_new:nnn {myclass} {Foo} {Bar}
\msg_warning:nn {myclass} {Foo}
\end{filecontents*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{myclass}
\begin{document}
\end{document}
μλλ€:
ν¨ν€μ§ myclass κ²½κ³ : λ°
l3msg
λͺ¨λμ \ProvidesExplClass
μ \ProvidesExplPackage
λ₯Ό ꡬλ³ν μ μμ΄μΌ νμ§ μμ΅λκΉ?
νμ§λ§ \g_msg_module_type_prop
νμΌ μ νμ μΆκ°νμ¬ λͺ
μμ μΌλ‘ μλ €μΌ ν©λλ€.
\prop_gput:Nnn \g_msg_module_type_prop { myclass } { Class }
μ νμ μΌλ‘ μ΄λ¦μ \g_msg_module_name_prop
.
\prop_gput:Nnn \g_msg_module_name_prop { myclass } { My~Nice~Class }
κ·Έλ¬λ©΄ λ€μκ³Ό κ°μ κ²½κ³ κ° νμλ©λλ€.
Class My Nice Class Warning: Bar
μ΄μ©λ©΄ l3msg
μ μλ μ±μ°κΈ° κ²½μ° μ νμ \ProvidesExpl<Thing>
μ¬μ©λμλ€ ...
MWE:
\begin{filecontents*}[overwrite]{myclass.cls}
\ProvidesExplClass
{myclass}
{2021/04/26}
{0.1}
{
My Nice Class
}
\NeedsTeXFormat{LaTeX2e}
\LoadClass { article }
%
\prop_gput:Nnn \g_msg_module_type_prop { myclass } { Class }
\prop_gput:Nnn \g_msg_module_name_prop { myclass } { My~Nice~Class }
\msg_new:nnn {myclass} {Foo} {Bar}
\msg_warning:nn {myclass} {Foo}
\end{filecontents*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{myclass}
\begin{document}
\end{document}
\ProvidesExpl<Thing>
κ° μ¬μ©λ κ²½μ°l3msg
μ΄ μ νμ μλμΌλ‘ μ±μΈ μ μμ΅λλ€...
μ’μ κ²! :μλ€:
\ProvidesExpl...
μ μ½λμ μ¬μ©λλ λͺ¨λ μ λμ¬ μ¬μ΄μλ νΉλ³ν κ΄κ³κ° μμ΅λλ€. μλμΌλ‘ ν΄μΌ νλ μΌμ΄λΌκ³ μκ°ν©λλ€.
κ·Έκ²μ μ 체 'μ€μ λ‘ ν΄λμ€λ expl3
ꡬ문μ μ¬μ©ν΄μλ μ λλ€'λΌλ λ¬Έμ κ° μκΈ° μ μ
λλ€. κ·Έκ²μ μ λλ‘ μλνμ§ μλ μμ΄λμ΄μμ΅λλ€. (ν΄λμ€λ μ¬μ ν λ λ§μ μμ
μ΄ νμνμ§λ§ ν¨ν€μ§μ μνλ νλ‘κ·Έλλ°μ ν΄μλ μ λ©λλ€.)
\ProvidesExpl...
μ μ½λμ μ¬μ©λλ λͺ¨λ μ λμ¬ μ¬μ΄μλ νΉλ³ν κ΄κ³κ° μμ΅λλ€. μλμΌλ‘ ν΄μΌ νλ μΌμ΄λΌκ³ μκ°ν©λλ€.
μ κ·Έλ°μ§ λͺ¨λ₯΄κ² λ€.
κ·Έκ²μ μ 체 'μ€μ λ‘ ν΄λμ€λ
expl3
ꡬ문μ μ¬μ©ν΄μλ μ λλ€'λΌλ λ¬Έμ κ° μκΈ° μ μ λλ€. κ·Έκ²μ μ λλ‘ μλνμ§ μλ μμ΄λμ΄μμ΅λλ€. (ν΄λμ€λ μ¬μ ν λ λ§μ μμ μ΄ νμνμ§λ§ ν¨ν€μ§μ μνλ νλ‘κ·Έλλ°μ ν΄μλ μ λ©λλ€.)
λλ μ μλνμ§ μλ μμ΄λμ΄κ° 무μμΈμ§ μ΄ν΄νμ§ λͺ»ν©λλ€.
\ProvidesExpl...
μ μ½λμ μ¬μ©λλ λͺ¨λ μ λμ¬ μ¬μ΄μλ νΉλ³ν κ΄κ³κ° μμ΅λλ€. μλμΌλ‘ ν΄μΌ νλ μΌμ΄λΌκ³ μκ°ν©λλ€.μ κ·Έλ°μ§ λͺ¨λ₯΄κ² λ€.
\ProvidesExplClass
μμ ν΄λμ€ μ΄λ¦μ μ½λμμ μ¬μ©νλ μ λμ¬μ μΌμΉν νμκ° μμ΅λλ€. λλ μ½λλ ν¨ν€μ§μ ν΄λμ€ λͺ¨λμμ μ¬μ©ν μ μμΌλ―λ‘( achemso
LaTeX2e μ©μ΄λ‘ μ¬μ©) λ§ν¬κ° λͺ
ννμ§ μμ΅λλ€.
κ·Έκ²μ μ 체 'μ€μ λ‘ ν΄λμ€λ
expl3
ꡬ문μ μ¬μ©ν΄μλ μ λλ€'λΌλ λ¬Έμ κ° μκΈ° μ μ λλ€. κ·Έκ²μ μ λλ‘ μλνμ§ μλ μμ΄λμ΄μμ΅λλ€. (ν΄λμ€λ μ¬μ ν λ λ§μ μμ μ΄ νμνμ§λ§ ν¨ν€μ§μ μνλ νλ‘κ·Έλλ°μ ν΄μλ μ λ©λλ€.)λλ μ μλνμ§ μλ μμ΄λμ΄κ° 무μμΈμ§ μ΄ν΄νμ§ λͺ»ν©λλ€.
ν΄λμ€λ κΈ°λ₯μ΄ μλλΌ νμν/μ€νμΌ/λ±μ κ΄ν κ²μ΄μ΄μΌ ν©λλ€. νμλ ν¨ν€μ§μ μν΄ μΆκ°λμ΄μΌ νλ©° μ΄μμ μΌλ‘λ ν¨ν€μ§μ ν¨κ» μ¬μ©λλ ν΄λμ€μ λ
립μ μ
λλ€. νμ¬ μν©μ μ΄μμ μ΄μ§ μμΌλ©° μ΄κΈ°μ \ProvidesExpl...
μΈνΈκ° LaTeX2e 컀λμμ \Provides...
λ₯Ό λ¨μν λ―Έλ¬λ§νκΈ° μν΄ μ 곡λμμ΅λλ€. κ·Έλ¬λ λμ΄μΌ 보면 μλͺ»λ μ κ·Ό λ°©μμ
λλ€. _packages_λ expl3
μ½λλ₯Ό μ¬μ©ν΄μΌ νκ³ _classes_λ expl3
μμ ꡬνλ _μλ μλ λ¬Έμ μμ€ λλ λμμΈ μμ€ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
ν΄λμ€λ κΈ°λ₯μ΄ μλλΌ νμν/μ€νμΌ/λ±μ κ΄ν κ²μ΄μ΄μΌ ν©λλ€.
λ΄κ° νμ¬ μμ νκ³ μλ ν΄λμ€λ λ¬Έμμ 첫 λ²μ§Έ νμ΄μ§μ κ·Έλν½μ μ½μ ν΄μΌ ν©λλ€... μ΄ κ·Έλν½μ΄ λ°κ²¬λκ³ κ·Έλ μ§ μμΌλ©΄ κ²½κ³ (λ‘κ·Έ νμΌμ κ²½κ³ μ ν¨κ»)λ₯Ό νμν΄μΌ ν©λλ€. λμμΈμΈκ° κΈ°λ₯μΈκ°?
l3msg
λ¬Έμμ μλΆλΆμμ \g_msg_module_name_prop
λ° \g_msg_module_type_prop
λ¬Έμλ₯Ό μ΄λνμ¬ λΉλ©΄ν λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
@dbitouze λμμΈ λ μ½λμ λν΄ μ’μ μ§λ¬Έμ νκ³
μλ£ .
l3msg
λ¬Έμμ μλΆλΆμμ\g_msg_module_name_prop
λ°\g_msg_module_type_prop
λ¬Έμλ₯Ό μ΄λνμ¬ λΉλ©΄ν λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
AFAICS, OPμ MCEλ μ¬μ ν λ€μκ³Ό κ°μ΄ μλλ€.
ν¨ν€μ§ myclass κ²½κ³ : λ°
μ¬μ§μ΄ pdflatex-dev
. λ€μμ ν°λ―Έλμ μΆλ ₯(νμΌ λͺ©λ‘ ν¬ν¨)μ
λλ€.
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021) (preloaded format=pdflatex-dev)
restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2021-12-01> pre-release-0 (develop 2021-6-6 branch)
L3 programming layer <2021-06-01>
LaTeX Warning: Writing or overwriting file `./myclass.cls'.
(./myclass.cls
Document Class: myclass 2021/04/26 v0.1 My Nice Class
(/usr/local/texlive/2021/texmf-dist/tex/latex-dev/base/article.cls
Document Class: article 2021/02/12 v1.4n Standard LaTeX document class
(/usr/local/texlive/2021/texmf-dist/tex/latex-dev/base/size10.clo))
Package myclass Warning: Bar
) (/usr/local/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
(./test.aux) (./test.aux)
*File List*
myclass.cls 2021/04/26 v0.1 My Nice Class
article.cls 2021/02/12 v1.4n Standard LaTeX document class
size10.clo 2021/02/12 v1.4n Standard LaTeX file (size option)
l3backend-pdftex.def 2021-05-07 L3 backend support: PDF output (pdfTeX)
***********
)
No pages of output.
Transcript written on test.log.
@dbitouze μ μ²
\prop_gput:Nnn \g_msg_module_type_prop { myclass } { Class }
Brunoμ λ©μμ§μμ "μμ λ¨"μ λ¬Έμλ₯Ό λ μΌμ° μ΄λνμ¬ ν΄λΉ λΌμΈμ΄ λ μ΄μ νμνμ§ μλ€λ κ²μ΄ μλλΌ μΆκ°ν΄μΌ νλ€λ κ²μ λΆλͺ ν νλ κ²μ΄μμ΅λλ€.
@dbitouze μ μ²
\prop_gput:Nnn \g_msg_module_type_prop { myclass } { Class }
ν , μλ, μ€ν΄ν΄μ μ£μ‘ν©λλ€.
Brunoμ λ©μμ§μμ "μμ λ¨"μ λ¬Έμλ₯Ό λ μΌμ° μ΄λνμ¬ ν΄λΉ λΌμΈμ΄ λ μ΄μ νμνμ§ μλ€λ κ²μ΄ μλλΌ μΆκ°ν΄μΌ νλ€λ κ²μ λΆλͺ ν νλ κ²μ΄μμ΅λλ€.
λ무 λμ¨: μμ μ΄ λ μ΄μ μμ μμ±μμ μ‘°μΉκ° νμνμ§ μλ€κ³ μκ°νμ΅λλ€(κ·Έλ¦¬κ³ ν¬λ§νμ΅λλ€).
@josephwrightκ° μ€λͺ
νλ―μ΄ μ¬μ©λ μ λμ¬μ ν΄λμ€ λλ ν¨ν€μ§ μ΄λ¦ μ¬μ΄μλ μλμΌλ‘ κ°μ§ κ°λ₯ν μ°κ²°μ΄ μμ΅λλ€. μ΄κ²μ \ClassWarning
λ₯Ό λͺ
μμ μΌλ‘ λ§ν λ€μ μ΄λ¦μ μ§μ νλ μ΄μ μ 2 λ°©λ²κ³Ό μ€μ λ‘ λ€λ₯΄μ§ μμ΅λλ€. μ΄μ μ°κ²°μ ν λ²λ§ μ μνλ©΄ λ©λλ€. \Class...
λͺ
λ Ήμ μ€ν νκ³ ν΄λμ€ μ΄λ¦μ μ§μ ν©λλ€.
λ°λΌμ "myclass"λ₯Ό μ¬μ©νλ κ²μ msg μμ€ν
μ μ λ¬λ λ¬Έμμ΄μΌ λΏμ΄κ³ μ°λ¦¬ μΈκ°μ μ΄λ¦μμ "class"λ₯Ό 보λ κ²μ΄ msg μμ€ν
μ΄ ν΄λΉ μΆλ‘ μ ν μ μλ ν΄λμ€λΌλ κ²μ μλ―Ένλ€κ³ μκ°ν μ μμ§λ§(μ΄μ¨λ ν릴 μ μμ). μ΄κ²μ΄ ν΄λμ€ μμ±μμ μ‘°μΉκ° νμν μ΄μ μ΄λ©° κ³Όκ±°μ \ClassWarning{<classname>}
λ₯Ό μμ±ν κ³³μμ νμνμ΅λλ€. ν΄λμ€ μ΄λ¦μ΄ \ProvidesExplClass
λ‘ μλ €μ Έ μλ€κ³ ν΄μ msgμ μ¬μ©λ λ¬Έμμ΄μ΄ ν΄λΉ μ΄λ¦μ μ¬μ©νλ€λ μλ―Έλ μλλλ€. μλ₯Ό λ€μ΄ λλΆλΆμ ν¨ν€μ§ μ΄λ¦μ κΈΈμ§λ§ λ΄κ° μ¬μ©νλ μ λμ¬λ μλΉν 짧μ΅λλ€. λ°λΌμ νΉμ λ¬Έμμ΄μ΄ ν΄λμ€μμ msg μμ€ν
μ μλ €μΌ ν©λλ€.
\ProvidesExplClassκ° νΈμΆλκ³
\g_msg_module_type_propμ΄ μμκ³Ό λ μ¬μ΄μ μμ λμ§ μμμ΅λλ€.
νμΌ(\msg_new:nnnnμ΄ νΈμΆλ κ²½μ°μλ§ κ²½κ³ ).
λ무 μΆνκ² λ€λ¦¬μ§ μμΌλ©° μ΄ μ¬μ΄ μ€μλ₯Ό νΌν μ μμ΅λλ€.
μ°λ¦¬λ ν μ μμ§λ§ μ€λ₯λ μλͺ»λ(κ·Έλ¬λ 무ν΄ν) μΆλ ₯μΌλ‘ λνλλ©° ν λ²μ μ½κ² μμ λλ ν΄λμ€ μ€λ₯μΈ λμ λͺ¨λ λ¬Έμμ λν λ°νμ λΉμ©μ λλ€. λ°λΌμ μ λ λ°νμ κ²μ¬λ‘ μ²λ¦¬ μλλ₯Ό λ¦μΆλ κ²μ μ νΈνμ§ μμ΅λλ€. λͺ¨λ κ²½μ° νμΈ μ΅μ μΌλ‘ μ΄λν΄μΌ ν©λλ€. λλ μ΄ λ°νμ λΉμ©μ΄ κ·Έ μ체λ‘λ λͺ¨λ μμ§λ§ μ 체μ μΌλ‘ ν©μ°λλ€λ κ²μ μκ³ μμ΅λλ€.