[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