{macros} is for questions specifically concerning TeX's macro processor. Note that, because TeX uses macros ubiquitously, most questions about code that uses macros are not looking for information about how macros work, and so are not appropriate for this tag.

learn more… | top users | synonyms (4)

11
votes
5answers
513 views

Create a command for 'menu sequences'

I'm trying to create an extendable command that can take in a single argument (possibly in the following form): \menuentry{File:New:Class} And generate something like: \texttt{File -> New -&...
30
votes
5answers
2k views

How can I use one argument as the default value for another?

I'd like to define a command that takes 1, 2 or 3 arguments, and where the 2nd gets the same value as the 1st if it is not defined. I tried \newcommand\codefrom[3][#1][Matlab]{ ... } but I get an ...
28
votes
3answers
3k views

How can I use \patchcmd with commands with optional arguments?

This question led to a new package: xpatch This is likely a simple question, but I'm getting stuck on the small details. I have an internal command, defined by a package as \newcommand\foo@[3][]...
25
votes
2answers
3k views

Why don't we always use \long\def instead of \def?

Why don't we always use \long\def instead of \def? It seems that \long\def is more complete than \def. By the way, I know the difference between these two commands.
17
votes
3answers
3k views

Doing maths with distance values in LaTeX source code

I have a sty file with the command \newcommand{\foo}[1]{\noindent\kern#1} but I'd actually like to have something like \newcommand{\foo}[1]{\noindent\kern{#1 *0.5}} meaning that I'd like to have ...
17
votes
2answers
1k views

Minimal \protected@edef example

I recently came across \protected@edef in the/a LaTeX2e source. Can anyone give me a minimal or simple example, where I need this? I know this has to do with fragile commands/robustness, but I am ...
13
votes
2answers
2k views

Define a Macro via Macro if Given Macro is not defined

I want to define a macro if it is not already defined. I can do this inline as the example below shows. But I would like to have a macro to do this functionality for me. My attempt to make this work ...
18
votes
3answers
699 views

What is the difference between local and global in a TeX meaning?

In tikz declare function and babel french option it came to the question about the difference between local and global in a TeX meaning. In the liked question the babel shorthand ; should be ...
6
votes
1answer
1k views

Using \leftroot{}, \uproot{} with closed square root symbol

As mentioned in this answer to Nice-looking p-th roots the amsmath package provides \leftroot{} and \uproot{} which allow you to move the position of the root to the left, and up in small increments. ...
15
votes
2answers
3k views

Define an “escape underscore” environment

I am writing a text document in LaTeX where I need a lot a words with underscores: foo_bar_1, more_bar_2_long_expression_3. I know about the underscore package, but for some reason the [strings] ...
11
votes
6answers
1k views

How do I expand a macro into a tabular head?

I would like to be able to define a macro that can be used in the tabular definition. How can I do this? This does not work: \documentclass{article} \begin{document} \gdef\buildtabularhead{|||} \...
20
votes
1answer
9k views

Error: Missing \begin{document}

I wanted to make a command that outputs a number in math mode. This is how my file looks like: \documentclass{scrartcl} %\usepackage{epsdice} %\newcommand{dice}[1]{\epsdice{#1}} \newcommand{dice}[1]...
20
votes
3answers
1k views

Capitalizing strings ignoring closed class words

I was just reviewing my "capitalization standards" for titles and such and was wondering if there's a macro to do the same thing I'm forced to do by hand nowadays. My personal rules (feel free to ...
17
votes
3answers
1k views

How to define a macro to create a new macro with a name passed as its argument?

I want to define a macro \create that accept a single mandatory argument from which another new macro is created and named. The following code snippet may speak clearer what I want to achieve. But ...
6
votes
3answers
890 views

\includegraphics optional argument not resolved if macro

\documentclass[a4paper,10pt,twoside]{book} \usepackage[demo]{graphicx} \begin{document} \newcommand{\scalefactor}{scale = 0.25} \begin{figure}[!ht] \centering %Next line does not work \...
4
votes
2answers
2k views

Error with \newcommand and \section

I'm trying to typeset an article. In the preamble, I defined these two things: \newcommand{\leftexp}[2]{{\vphantom{#2}}^{#1}{#2}} \newcommand{\hr}{\leftexp{*}{\mathbb{R}}} However, when I try to ...
3
votes
2answers
162 views

Why linebreaks break the line height within certain environments with size-changing macros?

Why linebreaks break the line height within certain environments with size-changing macros? I'm trying to understand what's the difference between these three approaches: \newenvironment between {} ...
99
votes
4answers
112k views

\vspace vs. \vskip [duplicate]

What is the difference between \vspace{-1em} and \vskip -1em, for example? I guess the first is LaTeX, and the latter is TeX. When is the proper time to use one and not the other, and why?
14
votes
1answer
9k views

Defining New ShortCuts in TexStudio

This is not about new macros like \newcommand, \def and others. This is not about autocompletion like using .cwl (in TexStudio) This is also not about using shortcuts for predefined commands that are ...
23
votes
8answers
1k views

What is the best way to scan over a list of somethings?

It seems that a common operation needed when defining new commands is to scan over a list of arguments (separated e.g. by a comma, but maybe by something else) and do something with each argument in ...
16
votes
4answers
6k views

Optional arguments in \def

I want to re-define the \sqrt command (as detailed in Nice-looking p-th roots), and so far I have the following: \documentclass{article} \usepackage{fouriernc} % use the New Century Schoolbook font \...
16
votes
3answers
2k views

Expand after all that stuff?

Often I find myself in the need of expanding some macro, whose contents should be given as an argument to another command. The usual solution is to invoke some \expandafter concoctions to somehow ...
22
votes
3answers
29k views

\uppercase in \newcommand

I tried to use \uppercase in \newcommand: \newcommand\universidad{My University} \newcommand\Universidad{\uppercase{\universidad}} When I use this I get My University and not MY ...
24
votes
2answers
7k views

How do I split a string?

I need to split a string into one or more substrings. I know that I could use the xstring package, but I'd like to do it using only inbuilt TeX/LaTeX commands. So, if I say \def\MyTeXKnowledge{Not ...
23
votes
5answers
9k views

new command with cases / conditionals / 'if… then's

Suppose I want to define a command, say, \tree with, say, two arguments. I would like \tree to do different things depending on what my first argument is. For example, if #1 = a, then return $\sqrt{#...
18
votes
4answers
1k views

How to define a command that bolds the first letter of each word in the input argument?

I want to define a command that takes a sentence, a word or several words as input and bolds the first letter of each word. I need this mostly for abbreviations and so far I have done it manually in ...
12
votes
3answers
1k views

Censor text spanning multiple lines

I'd like to censor or hide some text while replacing it with the appropriate amount of white-space. The replacement text cannot be searchable. The text to be hidden usually exists in the LR mode. The ...
9
votes
4answers
2k views

Latex tag for making a comment appear or disappear in pdf?

Is it possible to tag sections of your .tex file so that you can make text appear or not? I have a long document and would like to be able to comment a certain section in each chapter, and produce ...
24
votes
4answers
3k views

On testing two fully expanded character strings for equality

I know three macros that test two fully expanded character strings for equality: \ifthenelse{\equal{<op1>}{<op2>}}{<true>}{<false>} (ifthen package) \IfStrEq{<op1>}{<...
15
votes
2answers
875 views

Equivalent of \show to display the LaTeX code in the document

I am looking for a command similar to show, but want the output in the document itself. All the examples I have found produce the output in the terminal, not the document. So, I want to replace the ...
12
votes
2answers
158 views

How do you peer into the definition of a robust command?

I know that, whenever I want to see how some control sequence, say \mycontrolsequence, is defined, I can use \show\mycontrolsequence then compile my code and look up the .log file. However, robust ...
26
votes
2answers
2k views

Arguments for TikZ style

Motivation To put arrows inside of a TikZ path I have defined myself a TikZ style arrow inside. To make it even more portable I want it to take arguments like this \draw[arrow inside={pos = 0.1, end ...
24
votes
3answers
7k views

\DeclareMathOperator won't take arguments

I'd like to define a family of math operators that have the same superscript, but different subscripts. My first attempt was: \DeclareMathOperator{\Upd}[1]{U^M_{#1}} But the log tells me that: l.3 ...
18
votes
3answers
3k views

What is the deal about these semantic vs syntactic commands?

I keep hearing people on this site talking about "semantic" vs "syntactic" commands and that the "semantic" ones are somehow better. I don't really get what they are talking about, could you explain ...
13
votes
3answers
8k views

How to change dot spacing in \dotfill?

I'm using the \dotfill command in a nomenclature to add units at the end of each line. Here is the code I'm using: \usepackage[refpage]{nomencl} \newcommand{\nomunit}[1]{% \renewcommand{\...
13
votes
5answers
1k views

Push/Pop or save a length/dimension?

Is it possible to push or pop a length like parindent? I want to change it temporarily but reset it soon after. I have a solution but looking for something a little nicer. I'll post it as an answer.
12
votes
4answers
4k views

How to replace text

I'd like to write something like this: \replace{Text should be replaced here, here and here}{here}{Latex} It should output Text should be replaced Latex, Latex and Latex How can this be done?
12
votes
3answers
6k views

Commands that may take a variable number of arguments

I have a situation where I want to define a command that takes a variable number of arguments, where the number of arguments is known programmatically via a \count, and process the parameters in some ...
9
votes
1answer
1k views

Highlighting line ranges in a lstlisting: partial solution, but expansion issues

In my quest for a better solution for How to change appearance of a particular line when using \lstincludelisting, I came across the linebackground= option Martin Scharrer added to the listings ...
20
votes
2answers
332 views

“Grab to #{” macro arguments

In How to create a macro with two or three ;-separated arguments?, Herbert uses a macro definition \def\defpoint#1#{\expandafter\defpoint@i#1;;\@nil} which Joseph Wright reports as having a "grab ...
20
votes
11answers
1k views

Storing an array of strings in a command

I want to store three strings in a variable \mydata like the following: \storedata\mydata{one}{two}{three} Then I want to extract the first/second/third string in the following way: \getdata[1]\...
18
votes
2answers
13k views

How to make \hl (highlighting) to automatically place incompatible commands in \mbox?

The soul package provides a useful command \hl for highlighting text. However, \cite, \ref, and some other commands (maybe equations too) must be placed within an \mbox in order for \hl to work ...
17
votes
3answers
3k views

\newcommand: How to determine if in math mode (and then include $ $)?

I would like to define a new command which should determine (within a tikz plot) whether its argument is in math mode or not. If so, it should wrap the argument with $ $. I found \ifmode to do this, ...
17
votes
1answer
3k views

How to redefine a command using \DeclareMathOperator

I'd like to declare some new operators using \DeclareMathOperator and some of the names are already taken by other commands (that I do not want to use). Is there an equivalent to the \renewcommand ...
15
votes
3answers
1k views

\def taking rest of the line as argument

I know how to define a macro that will take the rest of the paragraph as parameter. Simply write \def\a#1\par{\textbf{#1}}. But, how do I write a macro whose argument will extend to the end of the ...
10
votes
2answers
491 views

How do others manage their footnotes?

Sometimes I find footnotes either annoying or distracting when trying to edit the body of a text: particularly one which is heavily annotated with footnotes. One solution I've come up with is to ...
8
votes
1answer
3k views

Is there a LaTeX/TeX preprocessor/inliner that replaces only selected macros with their definitions?

I have the following situation: Like most LaTeX users that write much, I have my own header files where the packages I use normally are required and the macros I use often are defined. So if I write ...
7
votes
3answers
522 views

Looking for an \ignorespacesandpars

Is there an analogue of \ignorespaces which will also ignore the following \pars?
4
votes
3answers
2k views

Can (pdf)LaTeX recognize text strings and replace (expand) them?

I'd like LaTeX to replace e^ with \mathrm{e}^. I know I could just make a macro \e that does this, but I know I'll forget using it.. Can LaTeX find and replace and replace letter combinations (I don'...
25
votes
3answers
802 views

Does \newenvironment have a \provideenvironment cousin, as \newcommand has \providecommand?

To avoid the problem of having to decide whether to use \newcommand or \renewcommand, LaTeX has the option of \providecommand. Is there something corresponding to this for environments? I'd like to ...