diff --git a/license.txt b/license.txt
index 278cce8d4..c16b15765 100644
--- a/license.txt
+++ b/license.txt
@@ -123,6 +123,11 @@ Copyright: 2010-2015 Alexander Meyer-Gohde
2015-2017 Dynare Team
License: GPL-3+
+Files: matlab/collapse_figures_in_tabgroup.m
+Copyright: 2023 Eduard Benet Cerda
+ 2024 Dynare Team
+License: GPL-3+
+
Files: matlab/convergence_diagnostics/raftery_lewis.m
Copyright: 2016 Benjamin Born and Johannes Pfeifer
2016-2017 Dynare Team
diff --git a/matlab/collapse_figures_in_tabgroup.m b/matlab/collapse_figures_in_tabgroup.m
new file mode 100644
index 000000000..bacb3d690
--- /dev/null
+++ b/matlab/collapse_figures_in_tabgroup.m
@@ -0,0 +1,42 @@
+function collapse_figures_in_tabgroup
+
+% Copyright © 2023 Eduard Benet Cerda
+% Copyright © 2024 Dynare Team
+%
+% This file is part of Dynare.
+%
+% Dynare is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Dynare is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Dynare. If not, see .
+
+% Create a new figure with results
+fig = uifigure(Name = 'Dynare Results');
+
+% Add a grid layout to make sure it spans the entire width
+g = uigridlayout(fig, [1,1], Padding = 0);
+
+% Add a tabgroup
+tg = uitabgroup(g);
+
+% Find all figures with Dynare Tag
+f = findobj('-regexp','tag','dynare-figure');
+
+% Loop over all figures and reparent them to a tab. Avoid legends, they are
+% automatically tied.
+for j = 1 : numel(f)
+ t = uitab(tg);
+ types = arrayfun(@class, f(j).Children, 'UniformOutput', false);
+ idx = ismember(types, 'matlab.graphics.illustration.Legend'); % no need to reparent legends
+ set(f(j).Children(~idx),'Parent',t)
+ t.Title = f(j).Name;
+ delete(f(j))
+end
\ No newline at end of file
diff --git a/matlab/dyn_figure.m b/matlab/dyn_figure.m
index 6de947428..ccf678855 100644
--- a/matlab/dyn_figure.m
+++ b/matlab/dyn_figure.m
@@ -12,7 +12,7 @@ function h = dyn_figure(nodisplay, varargin)
% SPECIAL REQUIREMENTS
% none
-% Copyright © 2012-2017 Dynare Team
+% Copyright © 2012-2024 Dynare Team
%
% This file is part of Dynare.
%
@@ -30,7 +30,7 @@ function h = dyn_figure(nodisplay, varargin)
% along with Dynare. If not, see .
if nodisplay
- h = figure(varargin{:},'visible','off');
+ h = figure(varargin{:},'visible','off','tag','dynare-figure');
else
- h = figure(varargin{:});
+ h = figure(varargin{:},'tag','dynare-figure');
end