This question comes after a question about algorithms inside tcolorboxes.
Before the question, is better to explain what I have now. I have a file with the algorithm that is q-learning.tex
.
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage[longend]{algorithm2e}
\usepackage{textgreek}
\usepackage{amssymb}
\begin{document}
\begin{algorithm}[H]
Algorithm parameters: step size $\alpha \in (0, 1]$\;
Initialize $Q(s, a)$, for all $s \in \mathcal{S}^+, a \in \mathcal{A}(s)$, arbitrarily except that $Q(\mathrm{terminal}, \cdot) = 0$\;
\ForEach{episode}{
Initialize S\;
\ForEach{step of episode}{
Choose $A$ from $S$ using policy derived from $Q$ (e.g. \textepsilon-greedy)\;
Take action $A$, observe $R$, $S'$\;
$Q(S, A) \leftarrow Q(S, A) + \alpha [R + \gamma \max_a Q(S', a) - Q(S, A)]$\;
$S \leftarrow S'$\;
}
}
\end{algorithm}
\end{document}
And I include it in my main file with standalone
package.
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[subpreambles,sort]{standalone}
\usepackage{tcolorbox}
\usepackage{algorithm2e}
\begin{document}
\begin{tcolorbox}[fonttitle=\bfseries, title=Q-learning for estimating $\pi \approx \pi^*$]
\input{q-learning}
\end{tcolorbox}
\end{document}
And the cropped result is like this.
The reason why I need to load algorithm2e
again is obscure to me but it's not what bothers me now. I wish to number the algorithms and then listing them with \listofalgorithms
and I want also the possibility to refer to this kind of figures. However, in this implementation, I have no caption and I don't know where to put it. The caption should be the title
field of the tcolorbox
, i.e. the title should be displayed like "Algorithm 3.2 Q-learning for..." but the label should refer to the algorithm that is inside.
So, to summarize:
- The label should refer to the algorithm and I should have the possibility to make a list of algorithms with
\listofalgorithms
. - The caption of the algorithm should be displayed as the title of the
tcolorbox
The best change I've made so far is to insert a blank caption and a label inside the algorithm and referring it in the title. It also shows correctly in the list of algorithms. However, I'm not able to remove the annoying "Algorithm 1:" at the bottom.
This is the visual effect:
And this is the code:
q-learning.tex
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage[longend]{algorithm2e}
\usepackage{textgreek}
\usepackage{amssymb}
\begin{document}
\begin{algorithm}[H]
Algorithm parameters: step size $\alpha \in (0, 1]$\;
Initialize $Q(s, a)$, for all $s \in \mathcal{S}^+, a \in \mathcal{A}(s)$, arbitrarily except that $Q(\mathrm{terminal}, \cdot) = 0$\;
\ForEach{episode}{
Initialize S\;
\ForEach{step of episode}{
Choose $A$ from $S$ using policy derived from $Q$ (e.g. \textepsilon-greedy)\;
Take action $A$, observe $R$, $S'$\;
$Q(S, A) \leftarrow Q(S, A) + \alpha [R + \gamma \max_a Q(S', a) - Q(S, A)]$\;
$S \leftarrow S'$\;
}
}
\caption[Q-learning for estimating $\pi \approx \pi^*$]{}
\label{alg:q-learning}
\end{algorithm}
\end{document}
main.tex
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[subpreambles,sort]{standalone}
\usepackage{tcolorbox}
\usepackage{algorithm2e}
\begin{document}
\frontmatter
\listofalgorithms
\mainmatter
\chapter{First chapter}
\begin{tcolorbox}[fonttitle=\bfseries, title=Algorithm \ref{alg:q-learning}: Q-learning for estimating $\pi \approx \pi^*$]
\input{q-learning}
\end{tcolorbox}
\end{document}
Of course, the result unitl now is not suitable for my needs.