What do these commands specifically do?What do @firstoftwo and @secondoftwo do?Advantages and disadvantages of fully expandable macrosRemove macro from list like LOFProblem with csname macro expansionReport all duplicate macro names defined by newcommandDefining a command that starts with “@”Can I inject xspace in all commands from the complexity package?Combine `map` and `use` expl3 macrosAre there guidelines for finding good names for LaTeX 2e packages and control sequences defined in these packages?
Does Yeshayahu 43:10b / 43:13a imply HaShem was created?
Changing JPEG to RAW to use on Lightroom?
How much does Commander Data weigh?
How can I download a file through 2 SSH connections?
Macro inserted via everypar in obeylines context doesn't see some commands
Should I stick with American terminology in my English set young adult book?
Anyone else seeing white rings in the Undead parish?
How do proponents of Sola Scriptura address the ministry of those Apostles who authored no parts of Scripture?
The Wires Underground
What names do Cormyr's people use?
How to obtain a polynomial with these conditions?
Why did Khan ask Admiral James T. Kirk about Project Genesis?
How long do you think advanced cybernetic implants would plausibly last?
Why do banks “park” their money at the European Central Bank?
When one problem is added to the previous one
Can $! cause race conditions when used in scripts running in parallel?
What are the occurences of total war in the Native Americans?
Breaker Mapping Questions
What is the loud noise of a helicopter when the rotors are not yet moving?
Where does learning new skills fit into Agile?
Immediate Smaller Element Time Limit Exceeded
Ordering a list of integers
Why are non-collision-resistant hash functions considered insecure for signing self-generated information
Higman's lemma and a manuscript of Erdős and Rado
What do these commands specifically do?
What do @firstoftwo and @secondoftwo do?Advantages and disadvantages of fully expandable macrosRemove macro from list like LOFProblem with csname macro expansionReport all duplicate macro names defined by newcommandDefining a command that starts with “@”Can I inject xspace in all commands from the complexity package?Combine `map` and `use` expl3 macrosAre there guidelines for finding good names for LaTeX 2e packages and control sequences defined in these packages?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
makeatletter
providecommand*input@path
g@addto@macroinput@path./level1//./level1/level2//./level2//
makeatother
I understand:
makeatletter
makeatother
are just necessary for redefining macros or something.
providecommand
just takes the current macro input@path
and clears it.
g@addto@macro
I do not fully understand what this does.
./level1//./level1/level2//./level2//}
Nor this. Does it tell the input path that these are all directories which may be invoked directly?
macros input paths
New contributor
add a comment |
makeatletter
providecommand*input@path
g@addto@macroinput@path./level1//./level1/level2//./level2//
makeatother
I understand:
makeatletter
makeatother
are just necessary for redefining macros or something.
providecommand
just takes the current macro input@path
and clears it.
g@addto@macro
I do not fully understand what this does.
./level1//./level1/level2//./level2//}
Nor this. Does it tell the input path that these are all directories which may be invoked directly?
macros input paths
New contributor
add a comment |
makeatletter
providecommand*input@path
g@addto@macroinput@path./level1//./level1/level2//./level2//
makeatother
I understand:
makeatletter
makeatother
are just necessary for redefining macros or something.
providecommand
just takes the current macro input@path
and clears it.
g@addto@macro
I do not fully understand what this does.
./level1//./level1/level2//./level2//}
Nor this. Does it tell the input path that these are all directories which may be invoked directly?
macros input paths
New contributor
makeatletter
providecommand*input@path
g@addto@macroinput@path./level1//./level1/level2//./level2//
makeatother
I understand:
makeatletter
makeatother
are just necessary for redefining macros or something.
providecommand
just takes the current macro input@path
and clears it.
g@addto@macro
I do not fully understand what this does.
./level1//./level1/level2//./level2//}
Nor this. Does it tell the input path that these are all directories which may be invoked directly?
macros input paths
macros input paths
New contributor
New contributor
edited 7 hours ago
Sveinung
13.8k2 gold badges36 silver badges63 bronze badges
13.8k2 gold badges36 silver badges63 bronze badges
New contributor
asked 10 hours ago
julkarhamjulkarham
232 bronze badges
232 bronze badges
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You provide several interpretations of what various commands do.
makeatletter
andmakeatother
are just necessary for redefining macros or something.
Not quite. By default, the character @
is not allowed to occur in the name of a TeX or LaTeX macro; instead, valid multi-character macro names must consist of uppercase and lowercase letters exclusively or, more precisely, of characters with category code "letter". (By default, the only characters with catcode "letter" are, you guessed, uppercase and lowercase letters.) The instruction makeatletter
changes the catcode of @
from "other" to "letter", making it syntactically legal to use the @
character in multi-character macro names.
Why go through these steps? For by-now mostly historic reasons, LaTeX-internal commands often (but not exclusively) use one or more @
characters; this presumably makes it much less likely that "ordinary" users execute them by accident. makeatletter
lets you get over this (admittedly not very high) hurdle, and makeatother
restores the default catcode of @
.
providecommand
just takes the current macroinput@path
and clears it.
No! (You may be thinking of renewcommand<some existing command>
.) providecommand
acts like newcommand
if the first argument isn't already a valid macro name, and it does nothing if a macro by that name already exists. The purpose of
providecommand*input@path
is to make sure that the next instruction, viz., g@addto@macroinput@path./level1//./level1/level2//./level2//
, doesn't crash and burn in case a macro by the name input@path
hasn't been defined.
Let's now turn to
g@addto@macroinput@path./level1//./level1/level2//./level2//
The macro g@addto@macro
-- note the presence of two [2!] @
characters -- is a low-level LaTeX kernel command that takes two arguments: The first is the name of an existing macro (here: input@path
); the second is some additional material to be appended to the macro named in the first argument.
Assuming that the macro input@path
is either blank (because it was created by the preceding providecommand
instruction) or contains a syntactically valid path. The g@addto@macro
instruction appends
./level1//./level1/level2//./level2//
to that macro.
Not knowing where you obtained this code snippet from, or what it is supposed to do, I'm afraid I can't add anything more in terms of explanation or interpretation.
2
Very good explanation.
– Sveinung
7 hours ago
@Sveinung - Many thanks for the compliment -- and for the typo fixes!
– Mico
6 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
);
);
julkarham is a new contributor. Be nice, and check out our Code of Conduct.
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%2f505686%2fwhat-do-these-commands-specifically-do%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You provide several interpretations of what various commands do.
makeatletter
andmakeatother
are just necessary for redefining macros or something.
Not quite. By default, the character @
is not allowed to occur in the name of a TeX or LaTeX macro; instead, valid multi-character macro names must consist of uppercase and lowercase letters exclusively or, more precisely, of characters with category code "letter". (By default, the only characters with catcode "letter" are, you guessed, uppercase and lowercase letters.) The instruction makeatletter
changes the catcode of @
from "other" to "letter", making it syntactically legal to use the @
character in multi-character macro names.
Why go through these steps? For by-now mostly historic reasons, LaTeX-internal commands often (but not exclusively) use one or more @
characters; this presumably makes it much less likely that "ordinary" users execute them by accident. makeatletter
lets you get over this (admittedly not very high) hurdle, and makeatother
restores the default catcode of @
.
providecommand
just takes the current macroinput@path
and clears it.
No! (You may be thinking of renewcommand<some existing command>
.) providecommand
acts like newcommand
if the first argument isn't already a valid macro name, and it does nothing if a macro by that name already exists. The purpose of
providecommand*input@path
is to make sure that the next instruction, viz., g@addto@macroinput@path./level1//./level1/level2//./level2//
, doesn't crash and burn in case a macro by the name input@path
hasn't been defined.
Let's now turn to
g@addto@macroinput@path./level1//./level1/level2//./level2//
The macro g@addto@macro
-- note the presence of two [2!] @
characters -- is a low-level LaTeX kernel command that takes two arguments: The first is the name of an existing macro (here: input@path
); the second is some additional material to be appended to the macro named in the first argument.
Assuming that the macro input@path
is either blank (because it was created by the preceding providecommand
instruction) or contains a syntactically valid path. The g@addto@macro
instruction appends
./level1//./level1/level2//./level2//
to that macro.
Not knowing where you obtained this code snippet from, or what it is supposed to do, I'm afraid I can't add anything more in terms of explanation or interpretation.
2
Very good explanation.
– Sveinung
7 hours ago
@Sveinung - Many thanks for the compliment -- and for the typo fixes!
– Mico
6 hours ago
add a comment |
You provide several interpretations of what various commands do.
makeatletter
andmakeatother
are just necessary for redefining macros or something.
Not quite. By default, the character @
is not allowed to occur in the name of a TeX or LaTeX macro; instead, valid multi-character macro names must consist of uppercase and lowercase letters exclusively or, more precisely, of characters with category code "letter". (By default, the only characters with catcode "letter" are, you guessed, uppercase and lowercase letters.) The instruction makeatletter
changes the catcode of @
from "other" to "letter", making it syntactically legal to use the @
character in multi-character macro names.
Why go through these steps? For by-now mostly historic reasons, LaTeX-internal commands often (but not exclusively) use one or more @
characters; this presumably makes it much less likely that "ordinary" users execute them by accident. makeatletter
lets you get over this (admittedly not very high) hurdle, and makeatother
restores the default catcode of @
.
providecommand
just takes the current macroinput@path
and clears it.
No! (You may be thinking of renewcommand<some existing command>
.) providecommand
acts like newcommand
if the first argument isn't already a valid macro name, and it does nothing if a macro by that name already exists. The purpose of
providecommand*input@path
is to make sure that the next instruction, viz., g@addto@macroinput@path./level1//./level1/level2//./level2//
, doesn't crash and burn in case a macro by the name input@path
hasn't been defined.
Let's now turn to
g@addto@macroinput@path./level1//./level1/level2//./level2//
The macro g@addto@macro
-- note the presence of two [2!] @
characters -- is a low-level LaTeX kernel command that takes two arguments: The first is the name of an existing macro (here: input@path
); the second is some additional material to be appended to the macro named in the first argument.
Assuming that the macro input@path
is either blank (because it was created by the preceding providecommand
instruction) or contains a syntactically valid path. The g@addto@macro
instruction appends
./level1//./level1/level2//./level2//
to that macro.
Not knowing where you obtained this code snippet from, or what it is supposed to do, I'm afraid I can't add anything more in terms of explanation or interpretation.
2
Very good explanation.
– Sveinung
7 hours ago
@Sveinung - Many thanks for the compliment -- and for the typo fixes!
– Mico
6 hours ago
add a comment |
You provide several interpretations of what various commands do.
makeatletter
andmakeatother
are just necessary for redefining macros or something.
Not quite. By default, the character @
is not allowed to occur in the name of a TeX or LaTeX macro; instead, valid multi-character macro names must consist of uppercase and lowercase letters exclusively or, more precisely, of characters with category code "letter". (By default, the only characters with catcode "letter" are, you guessed, uppercase and lowercase letters.) The instruction makeatletter
changes the catcode of @
from "other" to "letter", making it syntactically legal to use the @
character in multi-character macro names.
Why go through these steps? For by-now mostly historic reasons, LaTeX-internal commands often (but not exclusively) use one or more @
characters; this presumably makes it much less likely that "ordinary" users execute them by accident. makeatletter
lets you get over this (admittedly not very high) hurdle, and makeatother
restores the default catcode of @
.
providecommand
just takes the current macroinput@path
and clears it.
No! (You may be thinking of renewcommand<some existing command>
.) providecommand
acts like newcommand
if the first argument isn't already a valid macro name, and it does nothing if a macro by that name already exists. The purpose of
providecommand*input@path
is to make sure that the next instruction, viz., g@addto@macroinput@path./level1//./level1/level2//./level2//
, doesn't crash and burn in case a macro by the name input@path
hasn't been defined.
Let's now turn to
g@addto@macroinput@path./level1//./level1/level2//./level2//
The macro g@addto@macro
-- note the presence of two [2!] @
characters -- is a low-level LaTeX kernel command that takes two arguments: The first is the name of an existing macro (here: input@path
); the second is some additional material to be appended to the macro named in the first argument.
Assuming that the macro input@path
is either blank (because it was created by the preceding providecommand
instruction) or contains a syntactically valid path. The g@addto@macro
instruction appends
./level1//./level1/level2//./level2//
to that macro.
Not knowing where you obtained this code snippet from, or what it is supposed to do, I'm afraid I can't add anything more in terms of explanation or interpretation.
You provide several interpretations of what various commands do.
makeatletter
andmakeatother
are just necessary for redefining macros or something.
Not quite. By default, the character @
is not allowed to occur in the name of a TeX or LaTeX macro; instead, valid multi-character macro names must consist of uppercase and lowercase letters exclusively or, more precisely, of characters with category code "letter". (By default, the only characters with catcode "letter" are, you guessed, uppercase and lowercase letters.) The instruction makeatletter
changes the catcode of @
from "other" to "letter", making it syntactically legal to use the @
character in multi-character macro names.
Why go through these steps? For by-now mostly historic reasons, LaTeX-internal commands often (but not exclusively) use one or more @
characters; this presumably makes it much less likely that "ordinary" users execute them by accident. makeatletter
lets you get over this (admittedly not very high) hurdle, and makeatother
restores the default catcode of @
.
providecommand
just takes the current macroinput@path
and clears it.
No! (You may be thinking of renewcommand<some existing command>
.) providecommand
acts like newcommand
if the first argument isn't already a valid macro name, and it does nothing if a macro by that name already exists. The purpose of
providecommand*input@path
is to make sure that the next instruction, viz., g@addto@macroinput@path./level1//./level1/level2//./level2//
, doesn't crash and burn in case a macro by the name input@path
hasn't been defined.
Let's now turn to
g@addto@macroinput@path./level1//./level1/level2//./level2//
The macro g@addto@macro
-- note the presence of two [2!] @
characters -- is a low-level LaTeX kernel command that takes two arguments: The first is the name of an existing macro (here: input@path
); the second is some additional material to be appended to the macro named in the first argument.
Assuming that the macro input@path
is either blank (because it was created by the preceding providecommand
instruction) or contains a syntactically valid path. The g@addto@macro
instruction appends
./level1//./level1/level2//./level2//
to that macro.
Not knowing where you obtained this code snippet from, or what it is supposed to do, I'm afraid I can't add anything more in terms of explanation or interpretation.
edited 7 hours ago
Sveinung
13.8k2 gold badges36 silver badges63 bronze badges
13.8k2 gold badges36 silver badges63 bronze badges
answered 9 hours ago
MicoMico
303k33 gold badges414 silver badges825 bronze badges
303k33 gold badges414 silver badges825 bronze badges
2
Very good explanation.
– Sveinung
7 hours ago
@Sveinung - Many thanks for the compliment -- and for the typo fixes!
– Mico
6 hours ago
add a comment |
2
Very good explanation.
– Sveinung
7 hours ago
@Sveinung - Many thanks for the compliment -- and for the typo fixes!
– Mico
6 hours ago
2
2
Very good explanation.
– Sveinung
7 hours ago
Very good explanation.
– Sveinung
7 hours ago
@Sveinung - Many thanks for the compliment -- and for the typo fixes!
– Mico
6 hours ago
@Sveinung - Many thanks for the compliment -- and for the typo fixes!
– Mico
6 hours ago
add a comment |
julkarham is a new contributor. Be nice, and check out our Code of Conduct.
julkarham is a new contributor. Be nice, and check out our Code of Conduct.
julkarham is a new contributor. Be nice, and check out our Code of Conduct.
julkarham is a new contributor. Be nice, and check out our Code of Conduct.
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%2f505686%2fwhat-do-these-commands-specifically-do%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