2

I'm trying to generate an .epub with tex4ebook. One of the commands I've defined uses \ifelsethen and \isempty to check for empty parameters and produce different output depending on which parameters are present:

  • If the first parameter is empty, it should print "empty1".
  • If the first parameter is not empty, but the second is empty, it should print "parameter#1 empty2".
  • If both parameters are present, it should print both.

I also need to be able to add a footnote to either parameter, and I use biblatex to handle references. However, this command doesn't work correctly if I use biblatex, as I've shown in the mwe below. I would appreciate any hints for how to get xifthen functions to work with biblatex or suggestions for alternatives to \ifthenelse and \isempty that are compatible with biblatex.

mwe.tex

\documentclass{book}

%\usepackage{biblatex}

\usepackage{xifthen} 

\newcommand{\printif}[2]{\ifthenelse{\isempty{#1}}{empty1}{#1\ifthenelse{\isempty{#2}}{ empty2}{ #2}}}

\begin{document}

\printif{apple\footnotemark[1]}{orange}

\printif{pear}{peach}

\footnotetext[1]{This is a footnote.}

\end{document}

Both of the examples in the mwe work as expected if I don't import biblatex.

epub without biblatex

If I import biblatex and comment out the first example, the document compiles, but the output is incorrect: the first parameter and the text that's supposed to be printed if the first parameter is empty are both present in the .epub.

epub with biblatex, only second example

part of mwe.log (with biblatex, only second example)

Package biblatex Info: Trying to load citation style 'numeric'...
Package biblatex Info: ... file 'numeric.cbx' found.
(/usr/share/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
File: numeric.cbx 2020/08/23 v3.15a biblatex citation style (PK/MW)
Package biblatex Info: Redefining '\cite'.
Package biblatex Info: Redefining '\parencite'.
Package biblatex Info: Redefining '\footcite'.
Package biblatex Info: Redefining '\footcitetext'.
Package biblatex Info: Redefining '\smartcite'.
Package biblatex Info: Redefining '\supercite'.
Package biblatex Info: Redefining '\textcite'.
Package biblatex Info: Redefining '\textcites'.
Package biblatex Info: Redefining '\cites'.
Package biblatex Info: Redefining '\parencites'.
Package biblatex Info: Redefining '\smartcites'.
)
Package biblatex Info: Trying to load configuration file...
Package biblatex Info: ... file 'biblatex.cfg' found.
(/usr/share/texmf-dist/tex/latex/biblatex/biblatex.cfg
File: biblatex.cfg 
)) (/usr/share/texmf-dist/tex/latex/xifthen/xifthen.sty
Package: xifthen 2015/11/05 v1.4.0 Extended ifthen features
(/usr/share/texmf-dist/tex/latex/tools/calc.sty
Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ)
\calc@Acount=\count382
\calc@Bcount=\count383
\calc@Adimen=\dimen141
\calc@Bdimen=\dimen142
\calc@Askip=\skip71
\calc@Bskip=\skip72
LaTeX Info: Redefining \setlength on input line 80.
LaTeX Info: Redefining \addtolength on input line 81.
\calc@Ccount=\count384
\calc@Cskip=\skip73
) (/usr/share/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty
Package: ifmtarg 2018/04/16 v1.2b check for an empty argument
)) (./mwe.cfg (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
version 2020-03-12-14:03
--------------------------------------
::::::::::::::::::::::::::::::::::::::::::
 TeX4ht info is available in the log file 
::::::::::::::::::::::::::::::::::::::::::
--------------------------------------
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-uni.4ht)) (/usr/share/texmf-d
ist/tex/generic/tex4ht/biblatex.4ht
version 2020-10-05-15:22
\sv:sec:cnt=\count388
\c@bib=\count389
LaTeX Info: Redefining \MakeUppercase on input line 206.
LaTeX Info: Redefining \MakeLowercase on input line 214.
\blx@unitmark=\skip75
--------------------------------------

Package biblatex Warning: Patching footnotes failed.
(biblatex)                Footnote detection will not work.

\@quotelevel=\count390
\@quotereset=\count391
(./mwe.aux)
LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
Package biblatex Info: Trying to load language 'english'...
Package biblatex Info: ... file 'english.lbx' found.
(/usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx
File: english.lbx 2020/08/23 v3.15a biblatex localization (PK/MW)
)
Package biblatex Info: Input encoding 'utf8' detected.
Package biblatex Info: Automatic encoding selection.
(biblatex)             Assuming data encoding 'utf8'.
Package biblatex Info: Trying to load bibliographic data...
Package biblatex Info: ... file 'mwe.bbl' not found.
No file mwe.bbl.
Package biblatex Info: Reference section=0 on input line 3.
Package biblatex Info: Reference segment=0 on input line 3.
--- file mwe.css ---
)
! Undefined control sequence.
<inserted text> \isempty 
                         {pear}
l.13 \printif{pear}{peach}
                          
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Missing number, treated as zero.
<to be read again> 
                   {
l.13 \printif{pear}{peach}
                          
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing = inserted for \ifnum.
<to be read again> 
                   {
l.13 \printif{pear}{peach}
                          
I was expecting to see `<', `=', or `>'. Didn't.

! Missing number, treated as zero.
<to be read again> 
                   {
l.13 \printif{pear}{peach}
                          
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

(./mwe.4ct) [1

] (./mwe.aux)

LaTeX Warning: There were undefined references.


Package biblatex Warning: Please (re)run Biber on the file:
(biblatex)                mwe
(biblatex)                and rerun LaTeX afterwards.

Package logreq Info: Writing requests to 'mwe.run.xml'.
 ) 

Output written on mwe.dvi (1 page, 15248 bytes).

If I import biblatex and don't comment out the first example, the document doesn't compile.

part of mwe.log (with biblatex, only first \printif example)

Package biblatex Info: Trying to load citation style 'numeric'...
Package biblatex Info: ... file 'numeric.cbx' found.
(/usr/share/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
File: numeric.cbx 2020/08/23 v3.15a biblatex citation style (PK/MW)
Package biblatex Info: Redefining '\cite'.
Package biblatex Info: Redefining '\parencite'.
Package biblatex Info: Redefining '\footcite'.
Package biblatex Info: Redefining '\footcitetext'.
Package biblatex Info: Redefining '\smartcite'.
Package biblatex Info: Redefining '\supercite'.
Package biblatex Info: Redefining '\textcite'.
Package biblatex Info: Redefining '\textcites'.
Package biblatex Info: Redefining '\cites'.
Package biblatex Info: Redefining '\parencites'.
Package biblatex Info: Redefining '\smartcites'.
)
Package biblatex Info: Trying to load configuration file...
Package biblatex Info: ... file 'biblatex.cfg' found.
(/usr/share/texmf-dist/tex/latex/biblatex/biblatex.cfg
File: biblatex.cfg 
)) (/usr/share/texmf-dist/tex/latex/xifthen/xifthen.sty
Package: xifthen 2015/11/05 v1.4.0 Extended ifthen features
(/usr/share/texmf-dist/tex/latex/tools/calc.sty
Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ)
\calc@Acount=\count382
\calc@Bcount=\count383
\calc@Adimen=\dimen141
\calc@Bdimen=\dimen142
\calc@Askip=\skip71
\calc@Bskip=\skip72
LaTeX Info: Redefining \setlength on input line 80.
LaTeX Info: Redefining \addtolength on input line 81.
\calc@Ccount=\count384
\calc@Cskip=\skip73
) (/usr/share/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty
Package: ifmtarg 2018/04/16 v1.2b check for an empty argument
)) (./mwe.cfg (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
version 2020-03-12-14:03
--------------------------------------
::::::::::::::::::::::::::::::::::::::::::
 TeX4ht info is available in the log file 
::::::::::::::::::::::::::::::::::::::::::
--------------------------------------
(/usr/share/texmf-dist/tex/generic/tex4ht/biblatex.4ht
version 2020-10-05-15:22
\sv:sec:cnt=\count388
\c@bib=\count389
LaTeX Info: Redefining \MakeUppercase on input line 206.
LaTeX Info: Redefining \MakeLowercase on input line 214.
\blx@unitmark=\skip75

Package biblatex Warning: Patching footnotes failed.
(biblatex)                Footnote detection will not work.

\@quotelevel=\count390
\@quotereset=\count391
No file mwe.aux.
LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 3.
LaTeX Font Info:    ... okay on input line 3.
Package biblatex Info: Trying to load language 'english'...
Package biblatex Info: ... file 'english.lbx' found.
(/usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx
File: english.lbx 2020/08/23 v3.15a biblatex localization (PK/MW)
)
Package biblatex Info: Input encoding 'utf8' detected.
Package biblatex Info: Automatic encoding selection.
(biblatex)             Assuming data encoding 'utf8'.
Package biblatex Info: Trying to load bibliographic data...
Package biblatex Info: ... file 'mwe.bbl' not found.
No file mwe.bbl.
Package biblatex Info: Reference section=0 on input line 3.
Package biblatex Info: Reference segment=0 on input line 3.
--- file mwe.css ---
)
! Undefined control sequence.
<inserted text> \isempty 
                         {apple\footnotemark [1]}
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Argument of \:Advance has an extra }.
<inserted text> 
                \par 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.

Runaway argument?
! Paragraph ended before \:Advance was complete.
<to be read again> 
                   \par 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.

! Argument of \reserved@a has an extra }.
<inserted text> 
                \par 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.

Runaway argument?
]
! Paragraph ended before \reserved@a was complete.
<to be read again> 
                   \par 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.

! Missing number, treated as zero.
<to be read again> 
                   {
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing = inserted for \ifnum.
<to be read again> 
                   {
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I was expecting to see `<', `=', or `>'. Didn't.

! Missing number, treated as zero.
<to be read again> 
                   {
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing control sequence inserted.
<inserted text> 
                \inaccessible 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
Please don't say `\def cs{...}', say `\def\cs{...}'.
I've inserted an inaccessible control sequence so that your
definition will be completed without mixing me up too badly.
You can recover graciously from this error, if you're
careful; see exercise 27.2 in The TeXbook.

! Missing number, treated as zero.
<to be read again> 
                   \bgroup 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing number, treated as zero.
<to be read again> 
                   \afterassignment 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing number, treated as zero.
<to be read again> 
                   \xdef 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing number, treated as zero.
<to be read again> 
                   \def 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing control sequence inserted.
<inserted text> 
                \inaccessible 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
Please don't say `\def cs{...}', say `\def\cs{...}'.
I've inserted an inaccessible control sequence so that your
definition will be completed without mixing me up too badly.
You can recover graciously from this error, if you're
careful; see exercise 27.2 in The TeXbook.

! Missing number, treated as zero.
<to be read again> 
                   {
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing control sequence inserted.
<inserted text> 
                \inaccessible 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
Please don't say `\def cs{...}', say `\def\cs{...}'.
I've inserted an inaccessible control sequence so that your
definition will be completed without mixing me up too badly.
You can recover graciously from this error, if you're
careful; see exercise 27.2 in The TeXbook.

! Missing { inserted.
\@gtempa ...nt by 1 \let \reserved@d =[\def \par }
                                                  \relax \TE@setvaltrue \els...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
Where was the left brace? You said something like `\def\a}',
which I'm going to interpret as `\def\a{}'.

! Use of \let doesn't match its definition.
\TE@valtrue ->\let \ifTE@val 
                             \iftrue 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Extra \else.
\@gtempa ...def \par }\relax \TE@setvaltrue \else 
                                                  \TE@setvalfalse \fi \TE@ne...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I'm ignoring this; it doesn't match any \if.

! Use of \let doesn't match its definition.
\TE@setvalfalse ->\let \ifTE@val 
                                 \ifTE@negate 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Use of \let doesn't match its definition.
\TE@negatefalse ->\let \ifTE@negate 
                                    \iffalse 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Use of \let doesn't match its definition.
\:ssg #1#2->\let \d:fn 
                       #1\def \:var {#2}\futurelet \:temp \:Assgn 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Use of \let doesn't match its definition.
\ip:op #1#2->\let \mth:op 
                          #1\let \adv:c #2\adv: 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Use of \let doesn't match its definition.
\ip:op #1#2->\let \mth:op #1\let \adv:c 
                                        #2\adv: 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! You can't use `begin-group character {' after \advance.
\:Advance #1->\bgroup 
                      \def \:temp {#1}\tmp:cnt #1\afterassignment \:aplus \m...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I'm forgetting what you said and not changing anything.

! Use of \def doesn't match its definition.
\:Advance #1->\bgroup \def \:temp 
                                  {#1}\tmp:cnt #1\afterassignment \:aplus \m...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Argument of \adv: has an extra }.
<inserted text> 
                \par 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.

Runaway argument?
! Paragraph ended before \adv: was complete.
<to be read again> 
                   \par 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.

! Use of \def doesn't match its definition.
\expand:after #1->\def \e:tmp 
                              {#1}\expandafter \e:tmp 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Use of \def doesn't match its definition.
\adv:c #1->\bgroup \def \:temp 
                               {#1}\tmp:cnt #1\afterassignment \:gplus \mth:...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Use of \let doesn't match its definition.
\Protect ->\let \prOteCt 
                         \pr:tc \ifx \prOteCt \pr:tc \let \prOteCt \relax \e...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Use of \let doesn't match its definition.
\Protect ->\let \prOteCt 
                         \pr:tc \ifx \prOteCt \pr:tc \let \prOteCt \relax \e...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Missing number, treated as zero.
<to be read again> 
                   }
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Use of \def doesn't match its definition.
\adv:c #1->\bgroup \def \:temp 
                               {#1}\tmp:cnt #1\afterassignment \:gplus \mth:...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Missing number, treated as zero.
<to be read again> 
                   \xdef 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Missing control sequence inserted.
<inserted text> 
                \inaccessible 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
Please don't say `\def cs{...}', say `\def\cs{...}'.
I've inserted an inaccessible control sequence so that your
definition will be completed without mixing me up too badly.
You can recover graciously from this error, if you're
careful; see exercise 27.2 in The TeXbook.

! Use of \def doesn't match its definition.
\:aplus ->\xdef \:temp {\def \expandafter 
                                          \noexpand \:temp {\the \tmp:cnt }}...
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you say, e.g., `\def\a1{...}', then you must always
put `1' after `\a', since control sequence names are
made up of letters only. The macro here has not been
followed by the required stuff, so I'm ignoring it.

! Too many }'s.
\:aplus ...expand \:temp {\the \tmp:cnt }}\egroup 
                                                  \:temp 
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
You've closed more groups than you opened.
Such booboos are generally harmless, so keep going.

! TeX capacity exceeded, sorry [input stack size=5000].
\:temp ->\:temp 
                {0}
l.11 \printif{apple\footnotemark[1]}{orange}
                                            
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.


No pages of output.

mwe.cfg

\Preamble{xhtml,fn-in}
\begin{document}
\EndPreamble

1 Answer 1

3

This is caused by a bug in biblatex.4ht. Try this updated version:

% biblatex.4ht (2021-01-29-14:14), generated from tex4ht-4ht.tex
% Copyright 2007-2009 Eitan M. Gurari
% Copyright 2009-2021 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
\immediate\write-1{version 2021-01-29-14:14}

   \def\make:blx:ver#1.#2#3\relax{%
   %\ifdim#1pt< 3pt \xdef\blx:ver:no{2}\else\xdef\blx:ver:no{3}\fi%
   \gdef\blx:ver:no{#1}
   \gdef\blx:subver:no{#2}
}
\expandafter\make:blx:ver\[email protected]\relax
\ifx\a:printshorthands\Undef\let\blx@shorthands\@empty\fi
\ifx\blx@startbib\:UnDef
 \pend:def\blx@shorthands{%
   \pend:def\blx@bibinit{%
       \HAssign\shorthands:cnt=0
       \NewConfigure{printfield-shorthand}{2}%
       \Configure{printfield-shorthand}%
         {\gHAdvance\shorthands:cnt by 1\relax
          \ifnum \shorthands:cnt=1 \a:printshorthands
          \else                    \c:printshorthands \fi
         }
         {\d:printshorthands}%
   \append:def\endtheshorthands{\b:printshorthands}%
   \csname a:@shorthands\endcsname}
}
\ifx\b:printshorthands\Undef\let\endtheshorthands\@empty\fi
\def\a:entryhead{CVR}
\def\a:entryhead:full{CV Radhakrishnan}
\ifx\bib@macro@entryhead:name\UnDef
  \let\bib@macro@entryhead:name\@empty\fi
\ifx\bib@macro@entryhead:full\UnDef
  \let\bib@macro@entryhead:full\@empty\fi
  \gdef\BibFileName[#1]#2{\expandafter\xdef\csname
       BibFileName#1\endcsname{#2}}
\newcount\sv:sec:cnt
\def\bibSecConfigure{%
  \let\save:section\section
  \global\sv:sec:cnt=\c@secnumdepth
  \def\section{\@ifstar
      {\c@secnumdepth=0\relax\save:section}%
      {\c@secnumdepth=\sv:sec:cnt\save:section}}%
}
\gHAssign\bibN=0
\@ifpackageloaded{hyperref}{}{%
\ifdefined\TE@hook\else%
\def\TE@hook{}%
\fi
}

\AtBeginDocument{%
  \Configure{ifthenelse}{\TE@hook}
}
  \:CheckOption{ooffice}\if:Option
   \def\bibConfigure{\ConfigureList{thebibliography}%
      {\IgnorePar\EndP \gHAdvance\bib:N by 1
       \HCode{<text:bibliography text:name="bib-\bib:N" >
              <text:bibliography-source>\Hnewline
             <text:index-title-template>}
           \NoFonts\ref:name\EndNoFonts
       \HCode{</text:index-title-template>\Hnewline
%
           <text:bibliography-entry-template\Hnewline
            text:bibliography-type="custom1"
            text:style-name="Bibliography11">\Hnewline
%
            <text:index-entry-bibliography
             text:bibliography-data-field="identifier"/>\Hnewline
%
           <text:index-entry-span>: </text:index-entry-span>\Hnewline
           <text:index-entry-bibliography
            text:bibliography-data-field="author" />\Hnewline
           <text:index-entry-span>, </text:index-entry-span>\Hnewline
%
           <text:index-entry-bibliography
            text:bibliography-data-field="title" />\Hnewline
           <text:index-entry-span>, </text:index-entry-span>\Hnewline
%
           <text:index-entry-bibliography
            text:bibliography-data-field="year" />\Hnewline
           </text:bibliography-entry-template>\Hnewline\Hnewline
           </text:bibliography-source>\Hnewline
           <text:index-body>\Hnewline}%
         \let\en:bib=\empty
      }%
      {\en:bib\HCode{</text:index-body></text:bibliography>}}
      {\en:bib\gdef\en:bib{\HCode{</text:p>\Hnewline}}%
        \HCode{<text:p text:style-name="p-bibitem">}%
        \gHAdvance\bibN by 1
        \HCode{<text:reference-mark
          text:name="X0-\csname BIB-\bibN\endcsname">%
          </text:reference-mark>}%
      }%
      {}{}
  }

  \else
    \def\bibConfigure{%
  \ConfigureList{thebibliography}
  {\ifvmode \IgnorePar \fi \EndP \EndP
    \HCode {<dl class="thebibliography">}%
%
% This is for linking citations with biblist items which
% are in a different file when output is split into different
% chunks. [CVR 2012-09-27]
%
%
% <biblatex-2.2>
%
  \immediate\write\@auxout{%
      \string\BibFileName[\therefsection]{\FileName}}%
%
% </biblatex-2.2>
%
    \PushMacro \end:itm \global \let \end:itm =\empty}%
  {\ifvmode \IgnorePar \fi \EndP
    \PopMacro \end:itm \global \let \end:itm \end:itm \EndP
    \HCode {</dd></dl>}\ShowPar}%
  {\ifvmode \IgnorePar \fi \EndP \gHAdvance \bibN by 1
    \end:itm \global \def \end:itm {\EndP \Tg </dd>}%
    \HCode {<dt id="X\therefsection-\abx@field@entrykey"
      class="thebibliography">}\bgroup \bf}%
  {\ifvmode \IgnorePar \fi \EndP
    \egroup
    \HCode {</dt><dd\Hnewline id="bib-\bibN"
      class="thebibliography">}%
    \par \ShowPar}%
 }

 \fi
\NewConfigure{printshorthands}{4}
\NewConfigure{@shorthands}[1]{\concat:config\a:@shorthands{#1}}
\let\a:@shorthands\empty
\def\nolinkurl{\o:url:}
% \def\blx@checksum{\ifx \blx@checksum@old \blx@checksum@new \else
%   \blx@warning@noline {Page references have changed.\MessageBreak
%     Rerun to get references right}\@tempswatrue \blx@reruntrue \fi
%   \@nameuse {blx@rerun}}
\def\blx@checksum#1#2#3{%
  \begingroup
  \blx@tempcnta\the\numexpr0#2*0#3\relax
  \blx@tempcntb\blx@tempcnta
  \divide\blx@tempcntb10
  \multiply\blx@tempcntb10
  \advance\blx@tempcnta-\blx@tempcntb
  \xdef#1{#1\the\blx@tempcnta}%
  \endgroup}

\@ifpackagelater{biblatex}{2018/03/01}{\let\blx:pend:def\pend:defI}{\let\blx:pend:def\pend:def}
\blx:pend:def\blx@bibliography{\bibSecConfigure%
  \pend:def\blx@bibinit{%
    \bibConfigure
     \csname onthebibliography:list\endcsname
  }%
}
\let\en:bib\@empty
\newcounter{bib}
\ifnum\blx:ver:no < 3
 \protected\def\blx@bbl@entry#1#2#3{%
  \begingroup
  \def\texht@bibkey{#1}
  \edef\abx@field@entrykey{\detokenize{#1}}%
  \global\advance\c@bib 1
  \immediate\write\@auxout{\string\expandafter\string\gdef
    \string\csname\space BIB-\thebib\string\endcsname
     {\expandafter\strip@prefix\meaning\texht@bibkey}}%
  \Tag{)QX\therefsection-#1}{\thebib}%
  \blx@setoptions@type{#2}%
  \blx@bbl@options{#3}%
  \blx@setoptions@entry
  \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}%
  \csuse\blx@bbl@data
  \cslet\blx@bbl@data\@empty
  \blx@bbl@addfield{entrykey}{\abx@field@entrykey}%
  \blx@bbl@addfield{entrytype}{#2}%
  \blx@imc@iffieldundef{options}
    {}
    {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}}
%
 \protected\def\blx@finentry{%
  \unspace
  \a:finentry
      \finentrypunct
      \blx@postpunct
  \b:finentry
  \blx@initunit
 }
%
\else
% Biblatex 3.0
%
% Hacks for biblatex
% MakeUppercase is redefined by tex4ht, biblatex tries to redefine it as well, but it relies on original
% LaTeX version:
\DeclareRobustCommand{\MakeUppercase}[1]{{%
    \def\i{I}\def\j{J}%
    \def\reserved@a##1##2{\let##1##2\reserved@a}%
    \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
    \protected@edef\reserved@a{\uppercase{#1}}%
    \reserved@a
}}
% Same applies also for \MakeLowercase
\DeclareRobustCommand{\MakeLowercase}[1]{{%
    \def\reserved@a##1##2{\let##2##1\reserved@a}%
    \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
    \protected@edef\reserved@a{\lowercase{#1}}%
    \reserved@a
}}

% I don't really understand this, but language processing is broken by default
% with biblatex. It loads language file, but it executes code which should be
% executed only in the case if the language file fails, it displays an error message
% and language handling doesn't work. When we execute following code, the language
% files are loaded before checking of the success and it seems to work.

\AtBeginDocument{%
\@ifpackageloaded{babel}
      {% This is required for languages which are never explicitly selected
        % It seems this code was executed also with Polyglossia, where it caused compilation error
        \@ifpackageloaded{polyglossia}{}{%
        \def\do#1{\blx@lbxinput{#1}{}{}}%
       \ifx\@empty\bbl@loaded\else%
       \expandafter\docsvlist\expandafter{\bbl@loaded}%
      \fi}}{}%
}
\fi % end of version boolean
\NewConfigure{finentry}{2}
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:printfield-#2\endcsname\relax
      \NewConfigure{printfield-#2}{2}%
      \a:printfield{printfield-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:printfield-#2\endcsname}%
       {\csname b:printfield-#2\endcsname}%
   \csname o:\string\blx@printfield:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@printfield\endcsname\:tempc
\NewConfigure{printfield}[1]{\def\a:printfield##1{#1}}
\Configure{printfield}{%
    \Configure{#1}%
       {\HCode{<!--#1-->}}%
       {\HCode{<!--/#1-->}}%
}
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:bibstring-#2\endcsname\relax
      \NewConfigure{bibstring-#2}{2}%
      \a:printfield{bibstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:bibstring-#2\endcsname}%
       {\csname b:bibstring-#2\endcsname}%
   \csname o:\string\blx@bibstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@bibstring\endcsname\:tempc
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:bibcpstring-#2\endcsname\relax
      \NewConfigure{bibcpstring-#2}{2}%
      \a:printfield{bibcpstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:bibcpstring-#2\endcsname}%
       {\csname b:bibcpstring-#2\endcsname}%
   \csname o:\string\blx@bibcpstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@bibcpstring\endcsname\:tempc
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:biblcstring-#2\endcsname\relax
      \NewConfigure{biblcstring-#2}{2}%
      \a:printfield{biblcstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:biblcstring-#2\endcsname}%
       {\csname b:biblcstring-#2\endcsname}%
   \csname o:\string\blx@biblcstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@biblcstring\endcsname\:tempc
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:bibucstring-#2\endcsname\relax
      \NewConfigure{bibucstring-#2}{2}%
      \a:printfield{bibucstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:bibucstring-#2\endcsname}%
       {\csname b:bibucstring-#2\endcsname}%
   \csname o:\string\blx@bibucstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@bibucstring\endcsname\:tempc
\NewConfigure{biblatex-style}[2]{%
   \def\:temp{#1}%
   \ifx \:temp\blx@cbxfile
      #2%
      \global\let\biblatex:style\def
   \fi
}

\def\biblatex:style{}
\Configure{biblatex-style}{}{}

\pend:def\at:docend{%
   \ifx \UnDef\biblatex:style
      \:warning{\string\Configure{biblatex-style}{\blx@cbxfile}{...}
         not available}%
   \fi
}
\let\blx:item\@item
\def\@item[#1]{%
  \blx:item[#1]%
  \ifhmode \spacefactor\blx@sf@par\fi
}
\let\blx@resetpuncthook\@empty
\let\blx@csq@ifkernmark\@empty
\newskip\blx@unitmark
\blx@unitmark=10pt plus 1pt minus 1pt
\let\abx@aux@page\@gobbletwo
\let\abx@aux@fnpage\@gobbletwo
\let\abx@aux@refsection\@gobbletwo
%
% <[email protected]> reported that After updating
% biblatex and biblatex.ht to versions 2.2 respectively
% 2012-09-28-17:49 (using MiKTeX 2.9 64 bit), tex4ht seemed no longer
% respected the defernumbers option in biblatex.sty: When applied to
% the attached file tex4hterror.tex.
%
% The problem was due to nullifying \abx@aux@number which in fact
% should have been redefined to \blx@aux@number when defernumbers
% option is true.
%
% This is done now and as per Kristian, the fix works fine now.
%
\ifnum\blx:ver:no < 3
%
 \protected\def\blx@aux@number#1#2#3#4{%
  \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}%
  \ifblank{#4}%
    {}%
    {\csgdef{blx@labelnumber@#3}{#4}%
     %\blx@addchecksum{#1}{#4} % this can cause a nodocument error!
     }}
%
 \iftoggle{blx@defernumbers}%
    {\setkeys{blx@opt@pre}{labelnumber}%
     \let\blx@thelabelnumber\blx@addlabelnumber
     \let\abx@aux@number\blx@aux@number}%
    {\let\blx@thelabelnumber\relax
     \let\abx@aux@number\@gobblefour}
%
\else
  \def\@gobblefive#1#2#3#4#5{}%
 \protected\def\blx@aux@number#1#2#3#4#5{%
   \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}%
   \blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}%
   \global\toggletrue{blx@localnumber}%
   \ifblank{#5}
    {}
    {\csgdef{blx@labelnumber@#3@#4}{#5}}}

 \iftoggle{blx@defernumbers}%
    {\setkeys{blx@opt@pre}{labelnumber}%
     \let\blx@thelabelnumber\blx@addlabelnumber
     \let\abx@aux@number\blx@aux@number}%
    {\let\blx@thelabelnumber\relax
     \let\abx@aux@number\@gobblefive}
\fi % end of version boolean
%
\AtEndDocument{%
  \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}%
  \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}%
}
%
\def\blx@begunit{%
  \toggletrue{blx@tempa}%
  \iftoggle{blx@insert}%
    {\iftoggle{blx@unit}%
       {\begingroup
          \let\blx@begunit\@empty
          \let\blx@endunit\@empty
          \let\blx@endnounit\@empty
          \blx@unitpunct\blx@postpunct
        \endgroup
        \global\togglefalse{blx@unit}%
        \togglefalse{blx@tempa}}
       {\blx@postpunct}%
     \iftoggle{blx@block}%
       {\begingroup
          \let\blx@begunit\@empty
          \let\blx@endunit\@empty
          \let\blx@endnounit\@empty
          \newblockpunct
        \endgroup
        \global\togglefalse{blx@block}%
        \togglefalse{blx@tempa}}%
       {}}%
    {}%
  \blx@postpunct
  \blx@resetpuncthook
  \iftoggle{blx@tempa}%
    {}%
    {\global\togglefalse{blx@insert}}%
  \csname a:blx@unit\endcsname
  \blx@leavevmode
  \blx@csq@ifkernmark
    {}%
    {\penalty\@M
    \hskip-\blx@unitmark\relax
    \hskip\blx@unitmark\relax
    }%
  \begingroup
    \Configure{blx@unit}{}{}%
}
\def\blx@endunit{%
  \endgroup
  \csname b:blx@unit\endcsname
  \Configure{blx@unit}{}{}%
  \ifdim\lastskip=\blx@unitmark
    \unskip\unskip\unpenalty
    \global\togglefalse{blx@lastins}%
  \else
   \global\toggletrue{blx@insert}%
   \global\toggletrue{blx@lastins}%
 \fi
}
\NewConfigure{blx@unit}{2}
%
   \else
\fi

\ifdefined\XeTeXversion
  \def\abx@aux@defaultrefcontext#1#2#3{%
    \global\boolfalse{refcontextdefaults}%
  \csxdef{blx@assignedrefcontextbib@#1@\detokenize{#2}}{\detokenize{#3}}}
\fi

   \NewConfigure{thebibliography}{4}
\append:def\blx@bibinit{\a:bibinit}%
\NewConfigure{bibinit}{1}%

   \let\blx@anchors\@empty
\let\bib@field@entrykey\@empty

\protected\def\blx@anchor{%
  \xifinlist{X\the\c@refsection -%@
    \bib@field@entrykey}{\blx@anchors}%
    {}%
    {\listxadd\blx@anchors{X\the\c@refsection -%@
      \bib@field@entrykey}%
     \hyper:natanchorstart{X\the\c@refsection -%@
      \bib@field@entrykey}%
     \hyper:natanchorend}}

\protected\def\blx@bibhyperref{%
   \@ifnextchar[%]
     {\blx@bibhyperref@i}%
     {\blx@bibhyperref@i[\bib@field@entrykey]}}%

\long\def\blx@bibhyperref@i[#1]#2{%
   \hyper:natlinkstart{X\the\c@refsection -%@
     #1}%
     #2\hyper:natlinkend}%

\protected\long\def\blx@bibhyperlink#1#2{%
   \hyper:natlinkstart{X\the\c@refsection -%:
     #1}%
     #2\hyper:natlinkend}%

\protected\long\def\blx@bibhypertarget#1#2{%
   \@bsphack
   \hyper:natanchorstart{X\the\c@refsection -%:
     #1}%
   \@esphack
     #2\hyper:natanchorend}%

\let\blx@ifhyperref\@firstoftwo

% Oleg Domanov [email protected] reports:
% tex4ht ends with an error when compiles biblatex files. I'm on
% Windows, texlive 2012. I put here a minimal example and files
% generated with the command latexmk test && mk4ht oolatex test
%
% https://www.dropbox.com/s/hn1zm40htqs13mf/t4htlink.zip
%
% There is a superfluous \relax in the file test.tmp, line 65 which
% seems to cause the error.
%
% Changes to cope with biblatex upgrade caused this problem. It is now
% fixed. --CVR 2012/10/26
%
\:CheckOption{ooffice}\if:Option
 \def\hyper:natanchorstart#1{\Link{}{#1}\EndLink}%
 \def\hyper:natlinkstart#1{\Link{#1}{}}%
\else
 \def\hyper:natanchorstart#1{%
      \expandafter\ifx\csname QXpage.\thepage\endcsname\relax%
        \Tag{)Qpage.\thepage}{\file:id}%
        \HCode{<a id="page.\thepage"></a>}%
        \expandafter\xdef\csname QXpage.\thepage\endcsname{0}%
       \fi
      \Link[\csname BibFileName\therefsection\endcsname]{}{#1}\EndLink}
 \def\hyper:natlinkstart#1{%
      \expandafter\ifx\csname QXpage.\thepage\endcsname\relax%
        \Tag{)Qpage.\thepage}{\file:id}%
        \HCode{<a id="page.\thepage"></a>}%
        \expandafter\xdef\csname QXpage.\thepage\endcsname{0}%
       \fi
      \Link[\csname BibFileName\therefsection\endcsname]{#1}{}}
\fi
\def\hyper:natanchorend{}
\def\hyper:natlinkend{\EndLink}
\def\writeCiteLink#1{\immediate\write\@mainaux{%
    \string\@namedef{#1.\thepage}{\FileName}}}
\let\blx@addpagesum\@gobbletwo
\let\nolinkurl\relax

\ifx\blx:ver:no < 3
%
% biblatex 2.9a
%
% Newly added to process {keylist} environment (CVR)
%
\let\keylist\description
\let\endkeylist\enddescription
\def\keyitem#1{\item[#1]}%
%
%
\else
%
% biblatex 3.0
%
\let\keylist\Un:def
\let\endkeylist\Un:def
\newenvironment*{keylist}
  {\list{}{%
     \setlength{\labelwidth}{1.25in}%
     \setlength{\labelsep}{10pt}%
     \setlength{\leftmargin}{0pt}%
     \setlength{\itemsep}{0pt}%
     \raggedright%
     \renewcommand*{\makelabel}[1]{\hss\bfseries##1}}}
  {\endlist}
%
\def\keyitem#1{%
  \item[#1]
  \begingroup
    \keyitemhook%
    \blx@bibinit%
    \midsentence\ifbibstring{#1}{}{\latintext}\biblstring{#1}%
    \expandafter\lbx@initnamehook\lsmartoftext%
    \par\nobreak
    \midsentence\ifbibstring{#1}{}{\latintext}\bibsstring{#1}%
    \expandafter\lbx@initnamehook\ssmartoftext%
  \endgroup
  \par\nobreak}
\fi  % End of version boolean

\ConfigureList{keylist}%
   {\EndP\HCode{<dl \a:LRdir class="description">}%
      \PushMacro\end:itm
\global\let\end:itm=\empty}%
   {\PopMacro\end:itm \global\let\end:itm \end:itm
\EndP\HCode{</dd></dl>}\ShowPar}%
   {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt
        class="description">}\bgroup \bf}%
   {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}}

   \let\:temp\do
  \def\do#1{%
    \patchcmd#1%
      {\color@begingroup}%
      {\color@begingroup\toggletrue{blx@footnote}}%
      {\togglefalse{blx@tempa}\listbreak}%
      {}}%
  \docsvlist{%
    \@footnotetext,%          latex
    \H@@footnotetext,%        hyperref
    \scr@saved@footnotetext,% koma-script 3.x
    \l@dold@footnotetext,%    ledmac
    \l@doldold@footnotetext,% ledmac
    \@fntORI}%                frenchle
\let\do\:temp

\Hinput{biblatex}
\endinput

The problem is that it redefines the TE@hook macro, which is used by both Biblatex and Xifthen. biblatex.4ht shouldn't define it if it already exists.

This is the result:

enter image description here

1
  • that worked! thanks :)
    – avren
    Feb 25, 2021 at 23:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .