global variant of csname…endcsnameWhat exactly do csname and endcsname do?global confusionWhat causes the difference appearance by the useages of two “csname…endcsname”?Defining parametric commands - issue with nested csnameExpansion rules for csname/endcsname inside edefNon-alphabet letter in csname …endcsnameUse let with csnameWhat is the difference between somecmd and csname somecmdendcsname?Isn't csname fooendcsname = foo?
Did Michelle Obama have a staff of 23; and Melania have a staff of 4?
What allows us to use imaginary numbers?
How would armour (and combat) change if the fighter didn't need to actually wear it?
What are these panels underneath the wing root of a A380?
Setting up a Mathematical Institute of Refereeing?
Is Fourier series a sampled version of Fourier transform?
When does The Truman Show take place?
How can I enter recovery mode (for Mac OS, on an iMac) remotely?
Does writing regular diary entries count as writing practice?
What modifiers are added to the attack and damage rolls of this unique longbow from Waterdeep: Dragon Heist?
How do ultra-stable oscillators for spacecraft work?
How does the Moon's gravity affect Earth's oceans despite Earth's stronger gravitational pull?
Have there ever been other TV shows or Films that told a similiar story to the new 90210 show?
Output the list of musical notes
Is a USB 3.0 device possible with a four contact USB 2.0 connector?
Does the Haste spell's hasted action allow you to make multiple unarmed strikes? Or none at all?
How to train a replacement without them knowing?
What is the fastest way to level past 95 in Diablo II?
Has the speed of light ever been measured in vacuum?
What if a restaurant suddenly cannot accept credit cards, and the customer has no cash?
Why does "auf der Strecke bleiben" mean "to fall by the wayside"?
What's the point of writing that I know will never be used or read?
6502: is BCD *fundamentally* the same performance as non-BCD?
Is this bar slide trick shown on Cheers real or a visual effect?
global variant of csname…endcsname
What exactly do csname and endcsname do?global confusionWhat causes the difference appearance by the useages of two “csname…endcsname”?Defining parametric commands - issue with nested csnameExpansion rules for csname/endcsname inside edefNon-alphabet letter in csname …endcsnameUse let with csnameWhat is the difference between somecmd and csname somecmdendcsname?Isn't csname fooendcsname = foo?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Please consider the following minimal example:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
The resulting log file contains an entry retaining testB=macro:->blubb
, but no corresponding entry for testA
. As far as I understand TeX, this means that csname...endcsname
defines the macro testA
as relax
locally, which I immediately after reassign globally as "blubb", which, in turn, adds an retaining-entry on my save_stack.
In my real-world application, i need to be able to define a potentially infinite number of individually named macros using csname-constructions, which now has lead to a stack overflow because of this. (well, maybe not infinite, but definitely more than 80000s…)
My question now is: Is there a way to initialize a csname…endcsname
-construct globally to avoid them being stacked on the save-stack? Or some kind of workaround which keeps my save-stack clean?
tex-core grouping csname
|
show 2 more comments
Please consider the following minimal example:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
The resulting log file contains an entry retaining testB=macro:->blubb
, but no corresponding entry for testA
. As far as I understand TeX, this means that csname...endcsname
defines the macro testA
as relax
locally, which I immediately after reassign globally as "blubb", which, in turn, adds an retaining-entry on my save_stack.
In my real-world application, i need to be able to define a potentially infinite number of individually named macros using csname-constructions, which now has lead to a stack overflow because of this. (well, maybe not infinite, but definitely more than 80000s…)
My question now is: Is there a way to initialize a csname…endcsname
-construct globally to avoid them being stacked on the save-stack? Or some kind of workaround which keeps my save-stack clean?
tex-core grouping csname
luatex a possibility?
– David Carlisle
8 hours ago
why are you defining so many global variables in a local context?
– Ulrike Fischer
8 hours ago
xmltex… in a nutshell i'm reading the information from style- and class attributes in html tables and store that information in control sequences to render them later after some calculations and processing. For each cell. Individually.... And we have books that consist only of tables… And no, luatex is not an option: too slow for professional typesetting.
– Lupino
8 hours ago
I still don't see why this should means that you need groups. Also it sounds as if you would gain a lot by using lua to do the processing.
– Ulrike Fischer
7 hours ago
@UlrikeFischer As I said, lua(la)tex is not an option. Unfortunately… (and neither is xelatex, pdflatex, and anything other than latex with dvi output and xmltex). Besides, everything works perfectly well within tex: calculating, processing, and rendering. It is just that the "feature" described in the OP prevents scaling: If the tables are too long, TeX bites the dust with a "memory exceeded"-error.
– Lupino
7 hours ago
|
show 2 more comments
Please consider the following minimal example:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
The resulting log file contains an entry retaining testB=macro:->blubb
, but no corresponding entry for testA
. As far as I understand TeX, this means that csname...endcsname
defines the macro testA
as relax
locally, which I immediately after reassign globally as "blubb", which, in turn, adds an retaining-entry on my save_stack.
In my real-world application, i need to be able to define a potentially infinite number of individually named macros using csname-constructions, which now has lead to a stack overflow because of this. (well, maybe not infinite, but definitely more than 80000s…)
My question now is: Is there a way to initialize a csname…endcsname
-construct globally to avoid them being stacked on the save-stack? Or some kind of workaround which keeps my save-stack clean?
tex-core grouping csname
Please consider the following minimal example:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
The resulting log file contains an entry retaining testB=macro:->blubb
, but no corresponding entry for testA
. As far as I understand TeX, this means that csname...endcsname
defines the macro testA
as relax
locally, which I immediately after reassign globally as "blubb", which, in turn, adds an retaining-entry on my save_stack.
In my real-world application, i need to be able to define a potentially infinite number of individually named macros using csname-constructions, which now has lead to a stack overflow because of this. (well, maybe not infinite, but definitely more than 80000s…)
My question now is: Is there a way to initialize a csname…endcsname
-construct globally to avoid them being stacked on the save-stack? Or some kind of workaround which keeps my save-stack clean?
tex-core grouping csname
tex-core grouping csname
asked 8 hours ago
LupinoLupino
1,2957 silver badges11 bronze badges
1,2957 silver badges11 bronze badges
luatex a possibility?
– David Carlisle
8 hours ago
why are you defining so many global variables in a local context?
– Ulrike Fischer
8 hours ago
xmltex… in a nutshell i'm reading the information from style- and class attributes in html tables and store that information in control sequences to render them later after some calculations and processing. For each cell. Individually.... And we have books that consist only of tables… And no, luatex is not an option: too slow for professional typesetting.
– Lupino
8 hours ago
I still don't see why this should means that you need groups. Also it sounds as if you would gain a lot by using lua to do the processing.
– Ulrike Fischer
7 hours ago
@UlrikeFischer As I said, lua(la)tex is not an option. Unfortunately… (and neither is xelatex, pdflatex, and anything other than latex with dvi output and xmltex). Besides, everything works perfectly well within tex: calculating, processing, and rendering. It is just that the "feature" described in the OP prevents scaling: If the tables are too long, TeX bites the dust with a "memory exceeded"-error.
– Lupino
7 hours ago
|
show 2 more comments
luatex a possibility?
– David Carlisle
8 hours ago
why are you defining so many global variables in a local context?
– Ulrike Fischer
8 hours ago
xmltex… in a nutshell i'm reading the information from style- and class attributes in html tables and store that information in control sequences to render them later after some calculations and processing. For each cell. Individually.... And we have books that consist only of tables… And no, luatex is not an option: too slow for professional typesetting.
– Lupino
8 hours ago
I still don't see why this should means that you need groups. Also it sounds as if you would gain a lot by using lua to do the processing.
– Ulrike Fischer
7 hours ago
@UlrikeFischer As I said, lua(la)tex is not an option. Unfortunately… (and neither is xelatex, pdflatex, and anything other than latex with dvi output and xmltex). Besides, everything works perfectly well within tex: calculating, processing, and rendering. It is just that the "feature" described in the OP prevents scaling: If the tables are too long, TeX bites the dust with a "memory exceeded"-error.
– Lupino
7 hours ago
luatex a possibility?
– David Carlisle
8 hours ago
luatex a possibility?
– David Carlisle
8 hours ago
why are you defining so many global variables in a local context?
– Ulrike Fischer
8 hours ago
why are you defining so many global variables in a local context?
– Ulrike Fischer
8 hours ago
xmltex… in a nutshell i'm reading the information from style- and class attributes in html tables and store that information in control sequences to render them later after some calculations and processing. For each cell. Individually.... And we have books that consist only of tables… And no, luatex is not an option: too slow for professional typesetting.
– Lupino
8 hours ago
xmltex… in a nutshell i'm reading the information from style- and class attributes in html tables and store that information in control sequences to render them later after some calculations and processing. For each cell. Individually.... And we have books that consist only of tables… And no, luatex is not an option: too slow for professional typesetting.
– Lupino
8 hours ago
I still don't see why this should means that you need groups. Also it sounds as if you would gain a lot by using lua to do the processing.
– Ulrike Fischer
7 hours ago
I still don't see why this should means that you need groups. Also it sounds as if you would gain a lot by using lua to do the processing.
– Ulrike Fischer
7 hours ago
@UlrikeFischer As I said, lua(la)tex is not an option. Unfortunately… (and neither is xelatex, pdflatex, and anything other than latex with dvi output and xmltex). Besides, everything works perfectly well within tex: calculating, processing, and rendering. It is just that the "feature" described in the OP prevents scaling: If the tables are too long, TeX bites the dust with a "memory exceeded"-error.
– Lupino
7 hours ago
@UlrikeFischer As I said, lua(la)tex is not an option. Unfortunately… (and neither is xelatex, pdflatex, and anything other than latex with dvi output and xmltex). Besides, everything works perfectly well within tex: calculating, processing, and rendering. It is just that the "feature" described in the OP prevents scaling: If the tables are too long, TeX bites the dust with a "memory exceeded"-error.
– Lupino
7 hours ago
|
show 2 more comments
2 Answers
2
active
oldest
votes
Instead of making the csname
assignment global, you can make it even more local:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarbegingroupexpandafterendgroupexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
Now the expandafter
is executed in a group, so the csname
defined testB
to relax
in a group which ends before gdef
starts. So testB
is undefined when the global definition occurs which should avoid the retaining entry.
I dont quite understand why this is working, but it works. Thanks.
– Lupino
7 hours ago
Masterful! +1!!
– Steven B. Segletes
7 hours ago
add a comment |
I don't know squat about (La)TeX stacks (other than stackengine
, LOL), but if the goal is to avoid having the csname
inside a def
...
Expand the csname
before executing the outer def
.
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
expandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
good trick, but I expect that's cheating, as the OP would probably need 80000 top level instances of that in the stated use case. (+1anyway:-)
– David Carlisle
8 hours ago
Gaining that extra-level of depth (height?), actually helps for most of my cases, but not for all :/ Am I assuming correctly that i would need one level ofexpandafter
for each "layer" of embeded macro? That woudl be bad, because foo could itself be embedded in another macro, or not. And since I'm using (forced to use) xmltex, i probably never will reach "real" top-level with that method… Thanks anyways for the quick reply.
– Lupino
8 hours ago
@Lupino As I said, I don't profess to understand what is under TeX's hood, such as stacks. However, if thecsname
is the issue, you would not need additional layers ofexpandafter
...only on the layer employing thecsname
. If, on the other hand, the issue is one ofdef
vs.gdef
, then I am not sure. But if David thinks I am cheating, I probably am.
– Steven B. Segletes
7 hours ago
@Lupino The key would be if you can think of a problem case that uses nocsname
s...
– Steven B. Segletes
7 hours ago
1
@StevenB.Segletes If i usedefbazexpandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
and laterbazfoo
i would need to extend theexpandafter
s outwards todefbaz
to raise the csname to the same level as my call totestB
, otherwise i have the same problem as before…
– Lupino
7 hours ago
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f504501%2fglobal-variant-of-csname-endcsname%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Instead of making the csname
assignment global, you can make it even more local:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarbegingroupexpandafterendgroupexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
Now the expandafter
is executed in a group, so the csname
defined testB
to relax
in a group which ends before gdef
starts. So testB
is undefined when the global definition occurs which should avoid the retaining entry.
I dont quite understand why this is working, but it works. Thanks.
– Lupino
7 hours ago
Masterful! +1!!
– Steven B. Segletes
7 hours ago
add a comment |
Instead of making the csname
assignment global, you can make it even more local:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarbegingroupexpandafterendgroupexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
Now the expandafter
is executed in a group, so the csname
defined testB
to relax
in a group which ends before gdef
starts. So testB
is undefined when the global definition occurs which should avoid the retaining entry.
I dont quite understand why this is working, but it works. Thanks.
– Lupino
7 hours ago
Masterful! +1!!
– Steven B. Segletes
7 hours ago
add a comment |
Instead of making the csname
assignment global, you can make it even more local:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarbegingroupexpandafterendgroupexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
Now the expandafter
is executed in a group, so the csname
defined testB
to relax
in a group which ends before gdef
starts. So testB
is undefined when the global definition occurs which should avoid the retaining entry.
Instead of making the csname
assignment global, you can make it even more local:
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
deffoobarbegingroupexpandafterendgroupexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
Now the expandafter
is executed in a group, so the csname
defined testB
to relax
in a group which ends before gdef
starts. So testB
is undefined when the global definition occurs which should avoid the retaining entry.
answered 7 hours ago
Marcel KrügerMarcel Krüger
15.1k1 gold badge18 silver badges38 bronze badges
15.1k1 gold badge18 silver badges38 bronze badges
I dont quite understand why this is working, but it works. Thanks.
– Lupino
7 hours ago
Masterful! +1!!
– Steven B. Segletes
7 hours ago
add a comment |
I dont quite understand why this is working, but it works. Thanks.
– Lupino
7 hours ago
Masterful! +1!!
– Steven B. Segletes
7 hours ago
I dont quite understand why this is working, but it works. Thanks.
– Lupino
7 hours ago
I dont quite understand why this is working, but it works. Thanks.
– Lupino
7 hours ago
Masterful! +1!!
– Steven B. Segletes
7 hours ago
Masterful! +1!!
– Steven B. Segletes
7 hours ago
add a comment |
I don't know squat about (La)TeX stacks (other than stackengine
, LOL), but if the goal is to avoid having the csname
inside a def
...
Expand the csname
before executing the outer def
.
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
expandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
good trick, but I expect that's cheating, as the OP would probably need 80000 top level instances of that in the stated use case. (+1anyway:-)
– David Carlisle
8 hours ago
Gaining that extra-level of depth (height?), actually helps for most of my cases, but not for all :/ Am I assuming correctly that i would need one level ofexpandafter
for each "layer" of embeded macro? That woudl be bad, because foo could itself be embedded in another macro, or not. And since I'm using (forced to use) xmltex, i probably never will reach "real" top-level with that method… Thanks anyways for the quick reply.
– Lupino
8 hours ago
@Lupino As I said, I don't profess to understand what is under TeX's hood, such as stacks. However, if thecsname
is the issue, you would not need additional layers ofexpandafter
...only on the layer employing thecsname
. If, on the other hand, the issue is one ofdef
vs.gdef
, then I am not sure. But if David thinks I am cheating, I probably am.
– Steven B. Segletes
7 hours ago
@Lupino The key would be if you can think of a problem case that uses nocsname
s...
– Steven B. Segletes
7 hours ago
1
@StevenB.Segletes If i usedefbazexpandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
and laterbazfoo
i would need to extend theexpandafter
s outwards todefbaz
to raise the csname to the same level as my call totestB
, otherwise i have the same problem as before…
– Lupino
7 hours ago
add a comment |
I don't know squat about (La)TeX stacks (other than stackengine
, LOL), but if the goal is to avoid having the csname
inside a def
...
Expand the csname
before executing the outer def
.
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
expandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
good trick, but I expect that's cheating, as the OP would probably need 80000 top level instances of that in the stated use case. (+1anyway:-)
– David Carlisle
8 hours ago
Gaining that extra-level of depth (height?), actually helps for most of my cases, but not for all :/ Am I assuming correctly that i would need one level ofexpandafter
for each "layer" of embeded macro? That woudl be bad, because foo could itself be embedded in another macro, or not. And since I'm using (forced to use) xmltex, i probably never will reach "real" top-level with that method… Thanks anyways for the quick reply.
– Lupino
8 hours ago
@Lupino As I said, I don't profess to understand what is under TeX's hood, such as stacks. However, if thecsname
is the issue, you would not need additional layers ofexpandafter
...only on the layer employing thecsname
. If, on the other hand, the issue is one ofdef
vs.gdef
, then I am not sure. But if David thinks I am cheating, I probably am.
– Steven B. Segletes
7 hours ago
@Lupino The key would be if you can think of a problem case that uses nocsname
s...
– Steven B. Segletes
7 hours ago
1
@StevenB.Segletes If i usedefbazexpandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
and laterbazfoo
i would need to extend theexpandafter
s outwards todefbaz
to raise the csname to the same level as my call totestB
, otherwise i have the same problem as before…
– Lupino
7 hours ago
add a comment |
I don't know squat about (La)TeX stacks (other than stackengine
, LOL), but if the goal is to avoid having the csname
inside a def
...
Expand the csname
before executing the outer def
.
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
expandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
I don't know squat about (La)TeX stacks (other than stackengine
, LOL), but if the goal is to avoid having the csname
inside a def
...
Expand the csname
before executing the outer def
.
documentclassarticle
tracingrestores=1
deffoobarfoobar
defbargdeftestAblabb
expandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
begindocument
foo
testA
testB
enddocument
answered 8 hours ago
Steven B. SegletesSteven B. Segletes
168k9 gold badges214 silver badges435 bronze badges
168k9 gold badges214 silver badges435 bronze badges
good trick, but I expect that's cheating, as the OP would probably need 80000 top level instances of that in the stated use case. (+1anyway:-)
– David Carlisle
8 hours ago
Gaining that extra-level of depth (height?), actually helps for most of my cases, but not for all :/ Am I assuming correctly that i would need one level ofexpandafter
for each "layer" of embeded macro? That woudl be bad, because foo could itself be embedded in another macro, or not. And since I'm using (forced to use) xmltex, i probably never will reach "real" top-level with that method… Thanks anyways for the quick reply.
– Lupino
8 hours ago
@Lupino As I said, I don't profess to understand what is under TeX's hood, such as stacks. However, if thecsname
is the issue, you would not need additional layers ofexpandafter
...only on the layer employing thecsname
. If, on the other hand, the issue is one ofdef
vs.gdef
, then I am not sure. But if David thinks I am cheating, I probably am.
– Steven B. Segletes
7 hours ago
@Lupino The key would be if you can think of a problem case that uses nocsname
s...
– Steven B. Segletes
7 hours ago
1
@StevenB.Segletes If i usedefbazexpandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
and laterbazfoo
i would need to extend theexpandafter
s outwards todefbaz
to raise the csname to the same level as my call totestB
, otherwise i have the same problem as before…
– Lupino
7 hours ago
add a comment |
good trick, but I expect that's cheating, as the OP would probably need 80000 top level instances of that in the stated use case. (+1anyway:-)
– David Carlisle
8 hours ago
Gaining that extra-level of depth (height?), actually helps for most of my cases, but not for all :/ Am I assuming correctly that i would need one level ofexpandafter
for each "layer" of embeded macro? That woudl be bad, because foo could itself be embedded in another macro, or not. And since I'm using (forced to use) xmltex, i probably never will reach "real" top-level with that method… Thanks anyways for the quick reply.
– Lupino
8 hours ago
@Lupino As I said, I don't profess to understand what is under TeX's hood, such as stacks. However, if thecsname
is the issue, you would not need additional layers ofexpandafter
...only on the layer employing thecsname
. If, on the other hand, the issue is one ofdef
vs.gdef
, then I am not sure. But if David thinks I am cheating, I probably am.
– Steven B. Segletes
7 hours ago
@Lupino The key would be if you can think of a problem case that uses nocsname
s...
– Steven B. Segletes
7 hours ago
1
@StevenB.Segletes If i usedefbazexpandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
and laterbazfoo
i would need to extend theexpandafter
s outwards todefbaz
to raise the csname to the same level as my call totestB
, otherwise i have the same problem as before…
– Lupino
7 hours ago
good trick, but I expect that's cheating, as the OP would probably need 80000 top level instances of that in the stated use case. (+1anyway:-)
– David Carlisle
8 hours ago
good trick, but I expect that's cheating, as the OP would probably need 80000 top level instances of that in the stated use case. (+1anyway:-)
– David Carlisle
8 hours ago
Gaining that extra-level of depth (height?), actually helps for most of my cases, but not for all :/ Am I assuming correctly that i would need one level of
expandafter
for each "layer" of embeded macro? That woudl be bad, because foo could itself be embedded in another macro, or not. And since I'm using (forced to use) xmltex, i probably never will reach "real" top-level with that method… Thanks anyways for the quick reply.– Lupino
8 hours ago
Gaining that extra-level of depth (height?), actually helps for most of my cases, but not for all :/ Am I assuming correctly that i would need one level of
expandafter
for each "layer" of embeded macro? That woudl be bad, because foo could itself be embedded in another macro, or not. And since I'm using (forced to use) xmltex, i probably never will reach "real" top-level with that method… Thanks anyways for the quick reply.– Lupino
8 hours ago
@Lupino As I said, I don't profess to understand what is under TeX's hood, such as stacks. However, if the
csname
is the issue, you would not need additional layers of expandafter
...only on the layer employing the csname
. If, on the other hand, the issue is one of def
vs. gdef
, then I am not sure. But if David thinks I am cheating, I probably am.– Steven B. Segletes
7 hours ago
@Lupino As I said, I don't profess to understand what is under TeX's hood, such as stacks. However, if the
csname
is the issue, you would not need additional layers of expandafter
...only on the layer employing the csname
. If, on the other hand, the issue is one of def
vs. gdef
, then I am not sure. But if David thinks I am cheating, I probably am.– Steven B. Segletes
7 hours ago
@Lupino The key would be if you can think of a problem case that uses no
csname
s...– Steven B. Segletes
7 hours ago
@Lupino The key would be if you can think of a problem case that uses no
csname
s...– Steven B. Segletes
7 hours ago
1
1
@StevenB.Segletes If i use
defbazexpandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
and later bazfoo
i would need to extend the expandafter
s outwards to defbaz
to raise the csname to the same level as my call to testB
, otherwise i have the same problem as before…– Lupino
7 hours ago
@StevenB.Segletes If i use
defbazexpandafterdefexpandafterfoobarexpandafterexpandaftergdefcsname testBendcsnameblubb
and later bazfoo
i would need to extend the expandafter
s outwards to defbaz
to raise the csname to the same level as my call to testB
, otherwise i have the same problem as before…– Lupino
7 hours ago
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f504501%2fglobal-variant-of-csname-endcsname%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
luatex a possibility?
– David Carlisle
8 hours ago
why are you defining so many global variables in a local context?
– Ulrike Fischer
8 hours ago
xmltex… in a nutshell i'm reading the information from style- and class attributes in html tables and store that information in control sequences to render them later after some calculations and processing. For each cell. Individually.... And we have books that consist only of tables… And no, luatex is not an option: too slow for professional typesetting.
– Lupino
8 hours ago
I still don't see why this should means that you need groups. Also it sounds as if you would gain a lot by using lua to do the processing.
– Ulrike Fischer
7 hours ago
@UlrikeFischer As I said, lua(la)tex is not an option. Unfortunately… (and neither is xelatex, pdflatex, and anything other than latex with dvi output and xmltex). Besides, everything works perfectly well within tex: calculating, processing, and rendering. It is just that the "feature" described in the OP prevents scaling: If the tables are too long, TeX bites the dust with a "memory exceeded"-error.
– Lupino
7 hours ago