How to use refstepcounter correctly in attempt to implement subfigures?
Trying to use space on a page more economically, I developed the idea to arrange graphics as a table being part of a figure. As I still wanted to refer to individual graphics, I also wanted to have captions for each such sub-graphic.
(Only after I had problems, I realized that there does exist a similar mechanism, also named subfigure and subcaption)
(I'm no TeX expert, I only know LaTeX a bit)
The code shown below outputs the references as Text... 1 (1.2) ... 1 ..., so the sub-caption numbers are wrong, while the main caption number is correct. The intended output is
Text... 1 (1.3) ... 1Text... 1.2a (1.2) ... 1.2b ....
Text... 1.3a (1.3) ... 1.3b
The captions for the example code read (numbers are correct there):
Abbildung 1.1: Caption0
Abb. 1.2a: Caption1a Abb. 1.2b: Caption1b
Abbildung 1.2: Caption1
Abb. 1.3a: Caption2a Abb. 1.3b: Caption2b
Abbildung 1.3: Caption2
So here's the input for this example (use any placeholder graphic for Platzhalter.pdf):
documentclass[a4paper,twoside]{report}
usepackage{german}
usepackage[latin1]{inputenc}
usepackage{a4}
usepackage{makeidx}
usepackage{showidx}
usepackage{amsmath}
usepackage{url}
usepackage{graphicx}
usepackage{ifthen}
%
newcounter{subfigureX}[figure]
renewcommand{thesubfigureX}{thefigurealph{subfigureX}}
newcounter{savefigure}
newcommand{gtLab}{}
newcommand{gtCap}{}
%
newenvironment{gfxTableCapLab}[4][htbp]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gtLab}{}}%
{renewcommand{gtLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gtCap}{fLab}}%
{renewcommand{gtCap}{caption{gtLab{}#3}}}%
begin{figure}[#1]%
setcounter{savefigure}{value{figure}}%
stepcounter{figure}%
begin{center}%
begin{tabular}{#2}}%
{end{tabular}%
setcounter{figure}{value{savefigure}}%
gtCap%
end{center}
end{figure}%
}
%
newcommand{gLab}{}
newcommand{gCap}{}
%
newcommand{gfxCapLab}[4]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gLab}{}}%
{renewcommand{gLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gCap}{gLab}}%
{renewcommand{gCap}{parnoindentgLabsubcaption{#3}}}%
begin{minipage}[t]{#1textwidth}%
{centeringincludegraphics[width=textwidth]{#2}}%
gCap%
end{minipage}%
}
%
newcommand{gfxCap}[3]{gfxCapLab{#1}{#2}{#3}{}}
%
newcommand{subcaption}[1]{%
%refstepcounter{subfigureX}
addtocounter{subfigureX}{1}%
{small Abb.~thesubfigureX: #1}%
}
begin{document}
chapter{Chap}
%
begin{figure}
Test
caption{Caption0}
end{figure}
begin{gfxTableCapLab}{lr}{Caption1}{label1}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1a}{label1a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1b}{label1b}
end{gfxTableCapLab}
%
Text...
ref{label1a} (ref{label1}) ... ref{label1b} ...
begin{gfxTableCapLab}{lr}{Caption2}{label2}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2a}{label2a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2b}{label2b}
end{gfxTableCapLab}
Text...
ref{label2a} (ref{label2}) ... ref{label2b}
end{document}
(Originally I had named my counter subfigure also, but then I discovered that a counter with such a name already exists, so I appended the X).
Preferably the answer contains an explanation why my code does not work (everything that is wrong), how to do it correctly, and (as an extra) how I could achieve the same effect using the stock subfigure and subcaption mechanisms.
macros subcaption ref
add a comment |
Trying to use space on a page more economically, I developed the idea to arrange graphics as a table being part of a figure. As I still wanted to refer to individual graphics, I also wanted to have captions for each such sub-graphic.
(Only after I had problems, I realized that there does exist a similar mechanism, also named subfigure and subcaption)
(I'm no TeX expert, I only know LaTeX a bit)
The code shown below outputs the references as Text... 1 (1.2) ... 1 ..., so the sub-caption numbers are wrong, while the main caption number is correct. The intended output is
Text... 1 (1.3) ... 1Text... 1.2a (1.2) ... 1.2b ....
Text... 1.3a (1.3) ... 1.3b
The captions for the example code read (numbers are correct there):
Abbildung 1.1: Caption0
Abb. 1.2a: Caption1a Abb. 1.2b: Caption1b
Abbildung 1.2: Caption1
Abb. 1.3a: Caption2a Abb. 1.3b: Caption2b
Abbildung 1.3: Caption2
So here's the input for this example (use any placeholder graphic for Platzhalter.pdf):
documentclass[a4paper,twoside]{report}
usepackage{german}
usepackage[latin1]{inputenc}
usepackage{a4}
usepackage{makeidx}
usepackage{showidx}
usepackage{amsmath}
usepackage{url}
usepackage{graphicx}
usepackage{ifthen}
%
newcounter{subfigureX}[figure]
renewcommand{thesubfigureX}{thefigurealph{subfigureX}}
newcounter{savefigure}
newcommand{gtLab}{}
newcommand{gtCap}{}
%
newenvironment{gfxTableCapLab}[4][htbp]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gtLab}{}}%
{renewcommand{gtLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gtCap}{fLab}}%
{renewcommand{gtCap}{caption{gtLab{}#3}}}%
begin{figure}[#1]%
setcounter{savefigure}{value{figure}}%
stepcounter{figure}%
begin{center}%
begin{tabular}{#2}}%
{end{tabular}%
setcounter{figure}{value{savefigure}}%
gtCap%
end{center}
end{figure}%
}
%
newcommand{gLab}{}
newcommand{gCap}{}
%
newcommand{gfxCapLab}[4]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gLab}{}}%
{renewcommand{gLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gCap}{gLab}}%
{renewcommand{gCap}{parnoindentgLabsubcaption{#3}}}%
begin{minipage}[t]{#1textwidth}%
{centeringincludegraphics[width=textwidth]{#2}}%
gCap%
end{minipage}%
}
%
newcommand{gfxCap}[3]{gfxCapLab{#1}{#2}{#3}{}}
%
newcommand{subcaption}[1]{%
%refstepcounter{subfigureX}
addtocounter{subfigureX}{1}%
{small Abb.~thesubfigureX: #1}%
}
begin{document}
chapter{Chap}
%
begin{figure}
Test
caption{Caption0}
end{figure}
begin{gfxTableCapLab}{lr}{Caption1}{label1}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1a}{label1a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1b}{label1b}
end{gfxTableCapLab}
%
Text...
ref{label1a} (ref{label1}) ... ref{label1b} ...
begin{gfxTableCapLab}{lr}{Caption2}{label2}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2a}{label2a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2b}{label2b}
end{gfxTableCapLab}
Text...
ref{label2a} (ref{label2}) ... ref{label2b}
end{document}
(Originally I had named my counter subfigure also, but then I discovered that a counter with such a name already exists, so I appended the X).
Preferably the answer contains an explanation why my code does not work (everything that is wrong), how to do it correctly, and (as an extra) how I could achieve the same effect using the stock subfigure and subcaption mechanisms.
macros subcaption ref
Off-topic: Thegermanpackage is obsolete. Don't load it. Instead, runusepackage[german]{babel}or, better still,usepackage[ngerman]{babel}.
– Mico
Mar 31 at 0:13
@Mico: You are right (I remembered the command incorrectly): Usingrefstepcounterfixes the complaint, but still it does not fix the problem that the references show the wrong number. On the German package: Will do once the rest works (Thanks!).
– U. Windl
Mar 31 at 1:42
add a comment |
Trying to use space on a page more economically, I developed the idea to arrange graphics as a table being part of a figure. As I still wanted to refer to individual graphics, I also wanted to have captions for each such sub-graphic.
(Only after I had problems, I realized that there does exist a similar mechanism, also named subfigure and subcaption)
(I'm no TeX expert, I only know LaTeX a bit)
The code shown below outputs the references as Text... 1 (1.2) ... 1 ..., so the sub-caption numbers are wrong, while the main caption number is correct. The intended output is
Text... 1 (1.3) ... 1Text... 1.2a (1.2) ... 1.2b ....
Text... 1.3a (1.3) ... 1.3b
The captions for the example code read (numbers are correct there):
Abbildung 1.1: Caption0
Abb. 1.2a: Caption1a Abb. 1.2b: Caption1b
Abbildung 1.2: Caption1
Abb. 1.3a: Caption2a Abb. 1.3b: Caption2b
Abbildung 1.3: Caption2
So here's the input for this example (use any placeholder graphic for Platzhalter.pdf):
documentclass[a4paper,twoside]{report}
usepackage{german}
usepackage[latin1]{inputenc}
usepackage{a4}
usepackage{makeidx}
usepackage{showidx}
usepackage{amsmath}
usepackage{url}
usepackage{graphicx}
usepackage{ifthen}
%
newcounter{subfigureX}[figure]
renewcommand{thesubfigureX}{thefigurealph{subfigureX}}
newcounter{savefigure}
newcommand{gtLab}{}
newcommand{gtCap}{}
%
newenvironment{gfxTableCapLab}[4][htbp]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gtLab}{}}%
{renewcommand{gtLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gtCap}{fLab}}%
{renewcommand{gtCap}{caption{gtLab{}#3}}}%
begin{figure}[#1]%
setcounter{savefigure}{value{figure}}%
stepcounter{figure}%
begin{center}%
begin{tabular}{#2}}%
{end{tabular}%
setcounter{figure}{value{savefigure}}%
gtCap%
end{center}
end{figure}%
}
%
newcommand{gLab}{}
newcommand{gCap}{}
%
newcommand{gfxCapLab}[4]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gLab}{}}%
{renewcommand{gLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gCap}{gLab}}%
{renewcommand{gCap}{parnoindentgLabsubcaption{#3}}}%
begin{minipage}[t]{#1textwidth}%
{centeringincludegraphics[width=textwidth]{#2}}%
gCap%
end{minipage}%
}
%
newcommand{gfxCap}[3]{gfxCapLab{#1}{#2}{#3}{}}
%
newcommand{subcaption}[1]{%
%refstepcounter{subfigureX}
addtocounter{subfigureX}{1}%
{small Abb.~thesubfigureX: #1}%
}
begin{document}
chapter{Chap}
%
begin{figure}
Test
caption{Caption0}
end{figure}
begin{gfxTableCapLab}{lr}{Caption1}{label1}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1a}{label1a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1b}{label1b}
end{gfxTableCapLab}
%
Text...
ref{label1a} (ref{label1}) ... ref{label1b} ...
begin{gfxTableCapLab}{lr}{Caption2}{label2}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2a}{label2a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2b}{label2b}
end{gfxTableCapLab}
Text...
ref{label2a} (ref{label2}) ... ref{label2b}
end{document}
(Originally I had named my counter subfigure also, but then I discovered that a counter with such a name already exists, so I appended the X).
Preferably the answer contains an explanation why my code does not work (everything that is wrong), how to do it correctly, and (as an extra) how I could achieve the same effect using the stock subfigure and subcaption mechanisms.
macros subcaption ref
Trying to use space on a page more economically, I developed the idea to arrange graphics as a table being part of a figure. As I still wanted to refer to individual graphics, I also wanted to have captions for each such sub-graphic.
(Only after I had problems, I realized that there does exist a similar mechanism, also named subfigure and subcaption)
(I'm no TeX expert, I only know LaTeX a bit)
The code shown below outputs the references as Text... 1 (1.2) ... 1 ..., so the sub-caption numbers are wrong, while the main caption number is correct. The intended output is
Text... 1 (1.3) ... 1Text... 1.2a (1.2) ... 1.2b ....
Text... 1.3a (1.3) ... 1.3b
The captions for the example code read (numbers are correct there):
Abbildung 1.1: Caption0
Abb. 1.2a: Caption1a Abb. 1.2b: Caption1b
Abbildung 1.2: Caption1
Abb. 1.3a: Caption2a Abb. 1.3b: Caption2b
Abbildung 1.3: Caption2
So here's the input for this example (use any placeholder graphic for Platzhalter.pdf):
documentclass[a4paper,twoside]{report}
usepackage{german}
usepackage[latin1]{inputenc}
usepackage{a4}
usepackage{makeidx}
usepackage{showidx}
usepackage{amsmath}
usepackage{url}
usepackage{graphicx}
usepackage{ifthen}
%
newcounter{subfigureX}[figure]
renewcommand{thesubfigureX}{thefigurealph{subfigureX}}
newcounter{savefigure}
newcommand{gtLab}{}
newcommand{gtCap}{}
%
newenvironment{gfxTableCapLab}[4][htbp]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gtLab}{}}%
{renewcommand{gtLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gtCap}{fLab}}%
{renewcommand{gtCap}{caption{gtLab{}#3}}}%
begin{figure}[#1]%
setcounter{savefigure}{value{figure}}%
stepcounter{figure}%
begin{center}%
begin{tabular}{#2}}%
{end{tabular}%
setcounter{figure}{value{savefigure}}%
gtCap%
end{center}
end{figure}%
}
%
newcommand{gLab}{}
newcommand{gCap}{}
%
newcommand{gfxCapLab}[4]{%
ifthenelse{equal{#4}{}}%
{renewcommand{gLab}{}}%
{renewcommand{gLab}{label{#4}}}%
ifthenelse{equal{#3}{}}%
{renewcommand{gCap}{gLab}}%
{renewcommand{gCap}{parnoindentgLabsubcaption{#3}}}%
begin{minipage}[t]{#1textwidth}%
{centeringincludegraphics[width=textwidth]{#2}}%
gCap%
end{minipage}%
}
%
newcommand{gfxCap}[3]{gfxCapLab{#1}{#2}{#3}{}}
%
newcommand{subcaption}[1]{%
%refstepcounter{subfigureX}
addtocounter{subfigureX}{1}%
{small Abb.~thesubfigureX: #1}%
}
begin{document}
chapter{Chap}
%
begin{figure}
Test
caption{Caption0}
end{figure}
begin{gfxTableCapLab}{lr}{Caption1}{label1}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1a}{label1a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption1b}{label1b}
end{gfxTableCapLab}
%
Text...
ref{label1a} (ref{label1}) ... ref{label1b} ...
begin{gfxTableCapLab}{lr}{Caption2}{label2}%
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2a}{label2a}
&
gfxCapLab{0.4}{Platzhalter.pdf}{Caption2b}{label2b}
end{gfxTableCapLab}
Text...
ref{label2a} (ref{label2}) ... ref{label2b}
end{document}
(Originally I had named my counter subfigure also, but then I discovered that a counter with such a name already exists, so I appended the X).
Preferably the answer contains an explanation why my code does not work (everything that is wrong), how to do it correctly, and (as an extra) how I could achieve the same effect using the stock subfigure and subcaption mechanisms.
macros subcaption ref
macros subcaption ref
edited Mar 31 at 1:45
U. Windl
asked Mar 30 at 23:43
U. WindlU. Windl
1718
1718
Off-topic: Thegermanpackage is obsolete. Don't load it. Instead, runusepackage[german]{babel}or, better still,usepackage[ngerman]{babel}.
– Mico
Mar 31 at 0:13
@Mico: You are right (I remembered the command incorrectly): Usingrefstepcounterfixes the complaint, but still it does not fix the problem that the references show the wrong number. On the German package: Will do once the rest works (Thanks!).
– U. Windl
Mar 31 at 1:42
add a comment |
Off-topic: Thegermanpackage is obsolete. Don't load it. Instead, runusepackage[german]{babel}or, better still,usepackage[ngerman]{babel}.
– Mico
Mar 31 at 0:13
@Mico: You are right (I remembered the command incorrectly): Usingrefstepcounterfixes the complaint, but still it does not fix the problem that the references show the wrong number. On the German package: Will do once the rest works (Thanks!).
– U. Windl
Mar 31 at 1:42
Off-topic: The
german package is obsolete. Don't load it. Instead, run usepackage[german]{babel} or, better still, usepackage[ngerman]{babel}.– Mico
Mar 31 at 0:13
Off-topic: The
german package is obsolete. Don't load it. Instead, run usepackage[german]{babel} or, better still, usepackage[ngerman]{babel}.– Mico
Mar 31 at 0:13
@Mico: You are right (I remembered the command incorrectly): Using
refstepcounter fixes the complaint, but still it does not fix the problem that the references show the wrong number. On the German package: Will do once the rest works (Thanks!).– U. Windl
Mar 31 at 1:42
@Mico: You are right (I remembered the command incorrectly): Using
refstepcounter fixes the complaint, but still it does not fix the problem that the references show the wrong number. On the German package: Will do once the rest works (Thanks!).– U. Windl
Mar 31 at 1:42
add a comment |
1 Answer
1
active
oldest
votes
As nobody had an answer so far, I tried myself:
Replacing stepcounter{figure} with refstepcounter{figure} and replacing gLabsubcaption{#3} with subcaption{#3}gLab seemed to fix the problem. The only problem remaining is that in a list of figures the captions are out-of-order (I asked a different question for a possible solution).
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f482346%2fhow-to-use-refstepcounter-correctly-in-attempt-to-implement-subfigures%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
As nobody had an answer so far, I tried myself:
Replacing stepcounter{figure} with refstepcounter{figure} and replacing gLabsubcaption{#3} with subcaption{#3}gLab seemed to fix the problem. The only problem remaining is that in a list of figures the captions are out-of-order (I asked a different question for a possible solution).
add a comment |
As nobody had an answer so far, I tried myself:
Replacing stepcounter{figure} with refstepcounter{figure} and replacing gLabsubcaption{#3} with subcaption{#3}gLab seemed to fix the problem. The only problem remaining is that in a list of figures the captions are out-of-order (I asked a different question for a possible solution).
add a comment |
As nobody had an answer so far, I tried myself:
Replacing stepcounter{figure} with refstepcounter{figure} and replacing gLabsubcaption{#3} with subcaption{#3}gLab seemed to fix the problem. The only problem remaining is that in a list of figures the captions are out-of-order (I asked a different question for a possible solution).
As nobody had an answer so far, I tried myself:
Replacing stepcounter{figure} with refstepcounter{figure} and replacing gLabsubcaption{#3} with subcaption{#3}gLab seemed to fix the problem. The only problem remaining is that in a list of figures the captions are out-of-order (I asked a different question for a possible solution).
answered Apr 4 at 21:00
U. WindlU. Windl
1718
1718
add a comment |
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f482346%2fhow-to-use-refstepcounter-correctly-in-attempt-to-implement-subfigures%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
Off-topic: The
germanpackage is obsolete. Don't load it. Instead, runusepackage[german]{babel}or, better still,usepackage[ngerman]{babel}.– Mico
Mar 31 at 0:13
@Mico: You are right (I remembered the command incorrectly): Using
refstepcounterfixes the complaint, but still it does not fix the problem that the references show the wrong number. On the German package: Will do once the rest works (Thanks!).– U. Windl
Mar 31 at 1:42