[cstex] Složené závorky v masce a separátorech parametrů maker
Jaroslav Hajtmar
hajtmar at gyza.cz
Sat Jun 6 09:47:42 CEST 2020
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20200606/eff8ff92/attachment.htm>
More information about the csTeX
mailing list