{etoolbox} is a package which provides several macros which take advantage of the {e-tex} extension of (La)TeX.
17
votes
6answers
1k views
Checking if a number is a multiple of 4
Using etoolbox, ifthen, or another form of conditional checking, how can I check if a value is a multiple of 4? E.g. if the number is 4, 8, 12, 16, etc., then it returns "true".
17
votes
3answers
492 views
Should LaTeX counters always be modified globally?
In this answer, egreg states that "LaTeX counters should always be modified globally". However, the etoolbox package provides the \defcounter macro which will assign a value to a previously ...
16
votes
3answers
911 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
...
15
votes
2answers
188 views
Difference between \newbool and \newtoggle from etoolbox package
Paul Gaborit's answer to How to detect if option provided via \tikzset uses
\newbool to define a new boolean
\booltrue to set a boolean, and
\ifbool to perform a conditional operation
all from ...
13
votes
5answers
556 views
Placing many conditionals in a series
I frequently need to do something like this:
IF x < 1, DO a
ELSE IF x < 2, DO b
ELSE IF x < 3, DO c
ELSE, DO d
Using etoolbox, I end up nesting a lot of ifnumless, like this:
...
13
votes
3answers
276 views
Get n-th element of a list (with etoolbox, or not)
I'm defining a list and I need to obtain the n-th element of this list. I was surprised that etoolbox doesn't provide a way to obtain it. The way I found to obtain the n-th element is along these ...
13
votes
1answer
247 views
Help automating calendar creation
I'm doing calendars for all the family, and I have a problem automating the process. I'm using the calendar tikz library.
I need to include the moon phase in the calendar. I can do it with this code
...
12
votes
4answers
1k views
Making switch/case with etoolbox's \ifdefequal
I've got a define such as \def\doctype{SomeString}. \doctype can take on one of five values. I want to do something like a switch statement in a programming language, i.e. (pseudocode):
switch ...
11
votes
3answers
145 views
Understanding etoolbox \ifdefempty and \ifdefvoid
I am trying to understand the etoolbox \ifdefempty and \ifdefvoid macros. The documentation says that \ifdefempty
Expands to true if the control sequence is defined and is a
parameterless macro ...
11
votes
2answers
86 views
Patching arguments inside a macro
Consider the following example of a patch using etoolbox and a dummy macro \abc:
\documentclass{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\newcommand{\abc}[2]{#1\ #2}% Magic ...
11
votes
1answer
533 views
biblatex: Is it possible to patch macros created with \newbibmacro?
This question led to a new feature in a package:
xpatch
The etoolbox package provides various tools that "are useful to hook into or modify existing code" (etoolbox manual, section 3.4). The ...
11
votes
1answer
170 views
Using etoolbox to automatically generate input for \xymatrix
I'd like to make a command \exactseq such that, for example,
\exactseq{A,f,B,g,C}
corresponds to
\xymatrix{A \ar[r]^{f} & B \ar[r]^{g} & C}
and such that this works for inputs of ...
10
votes
5answers
889 views
How to test if a number is negative
Is there an easy way to test if a number is negative?
I don't need a general solution, but it does need to be able to handle a floating point value. I was using this solution from tex.ac.uk until I ...
10
votes
1answer
141 views
Problems with mathtools package
The following code produces an error. If the mathtools package is removed, it works. Why?
\documentclass{report}
\usepackage{mathtools}
\usepackage{etoolbox}
\newbool{shorttoc}
\makeatletter
...
10
votes
1answer
81 views
Save an etoolbox list to a file … and read it after
I have a problem. I would like :
to construct an etoolbox list
to save this list in a temp file
to read this list from this file at the next run
to use this file.
For any reason, I can't see the ...
9
votes
5answers
291 views
How can I undo an etoolbox patch?
Suppose I patch an environment using an etoolbox command such as \AtBeginEnvironment or \AfterEndEnvironment, etc. How can I undo these changes at a later stage?
\documentclass{article}
...
9
votes
3answers
203 views
Create macro with several options
I struggle to create a macro that can take several options. What I want to create is for \mycommand[up,middle]{Macro} to output Macro with 'up' and 'middle' specified. Using etoolbox in the MWE below ...
9
votes
1answer
292 views
Hiding section titles when the section is empty
I have created a macro like this:
\newcommand{\showsection}[2]{
\ifstrequal{#2}{}{}{\section{#1} #2}
}
It should be used like this in the document:
\showsection{Books}{
Do you know any ...
9
votes
1answer
2k views
Comparing an argument to a string when argument is a result of a command with etoolbox
I've got an example like that:
\documentclass{article}
\usepackage{etoolbox}
\newcommand{\ab}{a}
\newcommand{\aORb}[1]{%
\ifstrequal{#1}{a}{"a" was given}{not a}, %
...
9
votes
2answers
80 views
Provide boolean from two arguments case insensitives
In most publications scientific names are abbreviated except the first time. Moreover, the names must be in italics and only the first letter of the generic name should be upper-case.
The biocon ...
8
votes
3answers
668 views
Extract number from string and compare problem
I try to extract the year, month and day from a string and write different text depending on the given date. I thought I could use xstring and etoolbox, but I can'st get it to work. Here's the code ...
8
votes
3answers
205 views
error when patching with etoolbox \apptocmd: “the patching command seems to be nested in the argument to some other command”
The \apptocmd command from etoolbox is giving me an error I don't understand. I know how to work around the error in this particular case, but I'd like to understand what it's complaining about so ...
8
votes
2answers
596 views
Checking if two conditionals are met
I am using the etoolbox package to check some variables. I can use \ifnumless{a}{b}{True}{False} to check if "a" is less than "b" and output "True" if true and "False" if false". How can I check if ...
8
votes
2answers
293 views
Why using a backslash in command definitions?
I want to know the reasoning behind the (La)TeX inferface for defining commands with leading backslashes. I see why a backslash has to be used to call (expand) a command (macro), but I do not ...
8
votes
2answers
77 views
Getting \let definitions from inside a group, inside a loop
I have the following nested loop situation:
\begingroup
\def\do##1{%
\begingroup
\def\do####1{%
\csletcs{somemacro@##1@####1}{someothermacro@##1@####1}}%
...
8
votes
2answers
85 views
Ease the handling of labels
I want to ease the handling of labels in my document, and I want to show the label for a section if define a "variable".
Currently I'm doing it like this
Setting the up the "variable":
...
8
votes
2answers
227 views
Trouble changing font size in figure legends
I'm trying to set the font size smaller in the legends for all of my figures and tables. The way I was trying to do this was using \AtBeginEnvironment but that doesn't seem to do anything at all. This ...
8
votes
2answers
147 views
Patch tabular environment with colorbox
I'm trying to quickly add a colored background using colorbox to all tables as shown in this answer. While I could just update all the TeX by hand, I am trying to patch the tabular environment to ...
7
votes
4answers
151 views
Special macro definition
How can you define a macro \cmd in TeX primitives using two optional arguments (and a mandatory one) that fulfills the property that calling \cmd[opt]{mand} is equivalent to \cmd[][opt]{mand}. Yet, i ...
7
votes
3answers
407 views
\expandafter, \csname issue related to test for macro being defined
Just when I think I starting to understand \expandafter I run into this problem where I am trying to test if \ConditionG, \ConditionH, etc are defined in a loop. I tried all the combinations I could ...
7
votes
2answers
329 views
Auto-generating tables using etoolbox
I have a particular problem which I am trying to solve using etoolbox, but I can't figure out how. What I'm trying to do is to auto-generate a table based on information from a previous table. This is ...
7
votes
2answers
186 views
Incompatibility between etextools and etoolbox command \dolistloop (\forlistloop)?
The following code uses the etoolbox package to convert a list a,b,c into an internal list (called \mylist) and then typesets that with colons: a:b:c:. However, when I load the etextools package (by ...
7
votes
1answer
98 views
Getting a random sublist from a given list
The etoolbox package provides macros to handle list, which can be useful to package/class writers, however it miss macros to get random sublists.
So I want to define the following macros:
...
7
votes
1answer
164 views
Is there a workaround for this limitation of \patchcmd?
The \patchcmd command of the well-known etoolbox package has a minor limitation: Patching seems to fail whenever \patchcmd is used in the argument of another command and the search/replacement texts ...
7
votes
1answer
149 views
Patching a song environment
I'm having some fun with another songbook project, and this one has a particular feature: in the header, the range of song numbers is displayed, in order to ease the searching (similar to a ...
6
votes
4answers
268 views
Illegal parameter number with \docsvlist
I'm trying to define a macro that take as an input a CSV list and create an item list.
etoolbox comes just handy for this and the macro I'm using is
\begin{itemize}
\renewcommand*{\do}[1]{\item[] ...
6
votes
2answers
577 views
Package incompatibilites: etoolbox, hyperref, and bm, standalone?
I am trying to transition to using the etoolbox package, but seem to have run into some difficulties and they appear related to the hyperref and bm packages which to me seem totally unrelated. The ...
6
votes
2answers
137 views
Using etoolbox macros in tikz foreach loops
I am trying to wrap my head around etoolbox for use with TikZ. In this example (I know there are probably simpler ways to do this), I would like to draw a series of rectangles that are next to each ...
6
votes
2answers
113 views
Delaying command expansion that appears in \begin handler until \end handler executes
I have a custom environment for handling a code interface declaration that is specified as:
\begin{decl}{FOO}
\param{in}{bar} the bar input parameter
\param{out}{baz} the baz input parameter
...
6
votes
2answers
156 views
Using \notblank in etoolbox's \ifboolexpr statment
As the title says, I am currently trying to use etoolbox's \ifboolexpr statment on \notblank conditions but I am having issues with it.
The code concerned looks like this :
\ifboolexpr{%
test ...
6
votes
2answers
359 views
etoolbox: environment hooks in boolean switch
What did I wrong, that the following does not work here:
(Edit: I mixed up the true and false parts, but I don't want to change the code, because the answers refer to this in a way confusing one.)
...
6
votes
3answers
479 views
etoolbox conditional causes unwanted empty row in tabular
This code leaves an empty row at the bottom:
\documentclass{article}
\usepackage{etoolbox}
\def\somedef{foo}
\begin{document}
\begin{tabular}{|l|}
\hline
First row, not important \\ \hline
...
6
votes
1answer
113 views
On pitfalls of robust commands
These days, I’m more and more defining robust commands, e.g., using \newrobustcmd (etoolbox package) or \NewDocumentCommand (xparse package). Robust commands seem advantageous to me in many respects ...
6
votes
1answer
56 views
set pdfauthor using complex list-processing macro
I have created a macro, \joinlist, that adds commas or other delimiters between the elements of an etoolbox internal list. It has special handling for lists of just two elements ("a and b"). It also ...
6
votes
1answer
57 views
Why doesn't font family change take effect when using AtBeginEnvironment{figure} together with memoir?
I'm trying to use \AtBeginEnvironment{figure} to customize the font family and font size used in figures. However, it doesn't seem to have any effect. Here is a minimal example:
...
6
votes
2answers
135 views
How to append code to a section?
In my scrartcl document I want to change the spacing between sections and the first paragraph. Since I am using the parskip package, the parskip is set to a non-zero value. The \section command uses ...
6
votes
1answer
638 views
Switch Between Bibliography and Appendix in fancyhdr
What I am trying to accomplish is a fancyhdr that places Appendix or Bibliography in the header with one single definition. So if I am in the bibliography it should display Bibliography, but should ...
6
votes
1answer
222 views
Using ted (or another package) instead of etoolbox for patching commands in memoir?
Another question related to my university's odd ToC style requirements. Regular chapters in the ToC need to have all-caps titles, and appendices need regular-case titles. I have a perfectly elegant ...
6
votes
1answer
158 views
Applying condition around \intertext and \shortintertext leaves excess vertical space
When I try to make either \intertext or \shortintertext conditional I get excess vertical spacing prior to the conditional text as per the MWE below. Note the excess vertical spacing prior to "Albert ...
5
votes
2answers
44 views
Chapter count not increasing
Consider the following MWE:
\documentclass[12pt,twoside,letterpaper]{report}
\usepackage{etoolbox}
\newcounter{totchapters}
\providecommand\totchap{}
\makeatletter
\AtEndDocument{%
...
