[cstex] Složené závorky v masce a separátorech parametrů maker
Jan Sustek
Jan.Sustek at seznam.cz
Sat Jun 6 10:39:05 CEST 2020
Ahoj Jardo,
zkus toto.
\def\InvMat[#1]{\InvMatA#1}
\def\InvMatA#1,#2{\thematrix{{#1};{#2}}}
Funguje to pro dvouřádkové matice. Jestli to má být pro jiný konkrétní počet
řádků, tak to bude podobné. Jestli to má být pro obecný počet řádků, bylo by
řešení jemně komplikovanější, ale taky by to šlo.
Měj se hezky.
Honza
---------- Původní e-mail ----------
Od: Jaroslav Hajtmar <hajtmar at gyza.cz>
Komu: Czech and Slovak TeX-related mailing list <csTeX at cs.felk.cvut.cz>
Datum: 6. 6. 2020 9:54:51
Předmět: [cstex] Složené závorky v masce a separátorech parametrů maker
"Dobrý den všem v konfeře.
Rád bych se po dlouhé době zeptal na možná triviální otázku, nicméně jsem
nic nedohledal ani v PDFkové verzi TBN, kterou jsem krátce rozkliknul…
Nejprve se v úvodu zeptám a v závěru pak vysvětlím svoji motivaci.
Otázka: Existuje možnost použít složené závorky v masce parametru makra,
abych zároveň nepřišel o vyseparované parametry maker?
Uvedu příklad definice svého makra \InvMat. Upozorňuji, že se jedná o makro
ConTeXtu, což má význam jen z hlediska toho, že makro \thematrix sází v
ConTeXtu matici.
Např. \thematrix{{1, 2, 3}; {-1, 2, 1}} vysází dvouřádkovou matici se třemi
sloupci.Tento příklad ukazuje, co vlastně chci.
Rád bych vytvořil makro:
\def\InvMat[{#1,#2}]{\thematrix{#1;#2}}
které by umožnilo vysázet velký počet dvouřádkových matic tak, aby oba
parametry makra InvMat byly obsaženy v masce [{ …… }].
Na okraj dodávám, že úmyslně píši velký počet, protože pokud by se jednalo
o několik matic, tak bych to tímto způsobem vůbec nedělal…
Příklad použití:
\InvMat[{{1, 2, 3}; {-1, 2, 1}}] by mělo dát stejný výsledek jako \thematrix
{{1, 2, 3}; {-1, 2, 1}}.
Na této variantě jsem si vylámal zuby, nicméně jsem schopen použít variantu
(již v praxi použitelnou, nicméně trochu prudící):
\def\InvMat[\{#1,#2}\]{\thematrix{#1;#2}} …. tj. s backslashem před úvodní
a koncovou složenou závorkou. Toto makro mi funguje - volám jej takto:
\InvMat[\{{1, 2, 3}; {-1, 2, 1}\}]
To mne trochu obtěžuje, protože musím ty backslashe manuálně vkládat.
Neexistuje nějaká možnost (předpokládám, že ano a jak se znám je stupidní :-
) … ), jak dosáhnout funkčního výsledku při definici makra \InvMat prvním
způsobem, tj.
\def\InvMat[{#1,#2}]{\thematrix{#1;#2}}
Díky za případné rady a pěkný den všem.
Jarda Hajtmar
PS1: Doufám, že jste všichni ve zdraví a při silném pracovním nasazení v
rámci distanční výuky přežili dobíhající “koronaepidemónii” a přeji všem
brzký návrat k (jak se zdá) “normáluizaci”...
PS2: Přidávám vysvětlení pozadí celé záležitosti a mé motivace pro ty,
kterým leží v hlavě PROČ to chci zrovna tak pošahaně:
V CAS Mathematica mi funkce InvMat pro generování matic a k nim inverzních
matic dává na vstupu/výstupu následující výstup:
In[149]:= InvMat[{{1, 0, 0}, {1, 2, 1}, {0, 1, 1}}]
\InvMat[{{1,0,0},{-1,1,-1},{1,-1,2}}]
Out[149]= 2
Tento výstup ve finále vyexportuji ve tvaru, kde v 1. řádku volám svoji
Mathematica funkci, ve 2. řádku je výsledná inverzní matice a ve 3. řádku je
součet všech prvků výsledné matice:
InvMat[{{1, 0, 0}, {1, 2, 1}, {0, 1, 1}}] % vstupní volání mathematica
funkce
\InvMat[{{1,0,0},{-1,1,-1},{1,-1,2}}] % výstupní inverzní matice s prefixem
pro ConTeXtovou sazbu
2 % výstupní údaj - součet všech prvků inverzní matice (kvůli snazšímu
opravování testů v Teams assignments)
Moje motivace je nyní taková, že chci použít tento zdrojový text generovaný
v Mathematica pro vygenerování CSV tabulky, z níž pak z ConTeXtem pomocí
dávkového zpracování vysázím zadání prověrky pro větší množství studentů
tak, aby měl každý student naprosto jiné zadání a přitom byla snadná
automatická kontrola výsledků pomocí součtu všech prvků v inverzní matici.
Pěkný den.
Jarda
_______________________________________________
csTeX mailing list
csTeX at cs.felk.cvut.cz
https://lists.felk.cvut.cz/mailman/listinfo/cstex
"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20200606/2c536011/attachment-0001.htm>
More information about the csTeX
mailing list