20. marts 2009 - 11:38Der er
8 kommentarer og 1 løsning
Variabler i tex
Hej alle i kloge hoveder ;)
Jeg er igang med at lave en rapport på universitetet, i datateknologi. jeg har nogle forskellige brugsmønstre og klasser som skal have et id. jeg ville gerne at jeg bare kan kalde dette id ved at fx skrive klassens navn fx \var{klasse navn} og at den så outputter IDet er der nogen mulighed for dette?
En varmepumpe er en effektiv og miljøvenlig løsning til opvarmning og køling af boligen.
22. november 2024
Slettet bruger
20. marts 2009 - 11:54#1
Lav dig to makroer, en som definerer relationen mellem navnet og en som til navnet giver IDet
\makeatletter % gemmer data i \mydata@<#1>=<#2> \newcommand\DefineRelation[2]{% \@ifdefinable{mydata@#1}{% \@namedef{mydata@#1}{#2}}} \newcommand\Var[1]{% \@ifundefined{mydata@#1}{% \PackageError{mydata}{No data related to '#1'}{}% }{% \@nameuse{mydata@#1}% }% } \makeatother
Nice tak. Men jeg har ikke prøvet at lave makroer til latex før. kan du ikke prøve at forklare det?
Synes godt om
Slettet bruger
20. marts 2009 - 12:20#3
Det har som sådan ikke noget med variable at gøre. Du skal huske at TeX ikke er som programmeringssprog er flest. Vi laver bare et makronavn som på en speciel måde indeholder det navn vi ønsker at kunne henvise til senere. Værdien (det som makroen holder) er så din ID og er det som retuneres når makroen køres.
\@ifdefinable vil give en fejl hvis makroen allerede eksisterer (det er for at sikre egen bagdel).
\@namedef har den fordel at den kan lave makronavne hvor navnet indeholder tegn som \newcommand normalt ikke kan håndtere
\@ifundefined tester om en makro er defineret, det er igen for at sikre egen bagdel
\@nameuse udfører et makronavn som kan indeholde ikke standard tegn.
Bemærk at jeg ville ikke anvende æøå i nogen af navnene, værdierne kan godt indeholde æøå
hvad #1, #2 henviser til kan du læse i min LaTeXbog.
jo super. jeg skulle bare lige kunne gennemskue det. kan mærke det er fredag ;) Men tusinde tak.. smider lige nogle point efter dig ;)
Synes godt om
Slettet bruger
20. marts 2009 - 14:41#7
tak for points
Husk at skrive en kommentar i dit dokument som lige forklarer til dig selv hvad disse to makroer gør. Mere af hensyn til dem som du senere giver din preamble til.
okay.. takker vil jeg huske ;) Sidder lige og leger lidt med at lave flere subs fx
\DefineRelation{en}{hest}{horse}
\Var{en}{hest} giver horse
Synes godt om
Slettet bruger
20. marts 2009 - 15:17#9
\DefineRelation tager KUN to argumenter og \Var KUN et, så hvis du hår skrevet dette i dokumentet, så burde du få
horse hest hest
this \DefineRelation spiser {en}{hest} og lader {horse}, \Var spiser {en} erstatter med hest og lader {hest} stå
Makro programmering i LaTeX er en meget kompliceret process, så det ville være bedre hvis du startede med at gøre op med sig selv hvad det er du gerne vil have for hvorfor.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.