Problems with fragile frames in Beamer












2














I found a nice solution of re-using titles of beamer frames here by defining:



newenvironment{slide}[0]{
begin{frame}ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


With this definition I can't use lstlistings because the frame has to be fragile.



So, I've tried to change the definition to:



newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


But it don't work with the error:



File ended while scanning use of next.


Here is my little example:



documentclass{beamer}

usepackage{listings}

newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}


Thank you for your help!










share|improve this question






















  • Hiding the frame environment behind a new name is a very bad idea. Why not redefine the frametitle to show the section and subsection? Should all frames have the section and subsection as farmetitle, or only this frame?
    – samcarter
    Dec 28 '18 at 14:50












  • @samcarter: I agree that with beamer, redefining title may be easier, but could you explain why using another name is a bad idea? The only reason I can think about is that using other names make parsing and scripting more complicated.
    – sztruks
    Dec 28 '18 at 15:13










  • @sztruks Oh, there are a couple of reasons - in no particular order: It often reduces the functionality, because redefinitions often don't think about optional arguments, e.g. begin{frame}<beamer:1-4|handout:0>[plain]{frametitle}{subtitle}. -- If the appearance of the frametitle should be changed the corresponding template should be adjusted instead of working around like this -- In my opinion it obscures the code with no gain -- It makes the code less portable between presentations and more difficult to create MWE.
    – samcarter
    Dec 28 '18 at 15:42










  • @sztruks cont. -- it tempts users to use dangerous options like allowframeberaks or fragile as default for all frames.
    – samcarter
    Dec 28 '18 at 15:43












  • @samcarter Thanks. I was wondering if I should turn my comment to a question, to whom your answer would be accepted (provided it hasn't already been asked, of course).
    – sztruks
    Dec 28 '18 at 15:46
















2














I found a nice solution of re-using titles of beamer frames here by defining:



newenvironment{slide}[0]{
begin{frame}ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


With this definition I can't use lstlistings because the frame has to be fragile.



So, I've tried to change the definition to:



newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


But it don't work with the error:



File ended while scanning use of next.


Here is my little example:



documentclass{beamer}

usepackage{listings}

newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}


Thank you for your help!










share|improve this question






















  • Hiding the frame environment behind a new name is a very bad idea. Why not redefine the frametitle to show the section and subsection? Should all frames have the section and subsection as farmetitle, or only this frame?
    – samcarter
    Dec 28 '18 at 14:50












  • @samcarter: I agree that with beamer, redefining title may be easier, but could you explain why using another name is a bad idea? The only reason I can think about is that using other names make parsing and scripting more complicated.
    – sztruks
    Dec 28 '18 at 15:13










  • @sztruks Oh, there are a couple of reasons - in no particular order: It often reduces the functionality, because redefinitions often don't think about optional arguments, e.g. begin{frame}<beamer:1-4|handout:0>[plain]{frametitle}{subtitle}. -- If the appearance of the frametitle should be changed the corresponding template should be adjusted instead of working around like this -- In my opinion it obscures the code with no gain -- It makes the code less portable between presentations and more difficult to create MWE.
    – samcarter
    Dec 28 '18 at 15:42










  • @sztruks cont. -- it tempts users to use dangerous options like allowframeberaks or fragile as default for all frames.
    – samcarter
    Dec 28 '18 at 15:43












  • @samcarter Thanks. I was wondering if I should turn my comment to a question, to whom your answer would be accepted (provided it hasn't already been asked, of course).
    – sztruks
    Dec 28 '18 at 15:46














2












2








2







I found a nice solution of re-using titles of beamer frames here by defining:



newenvironment{slide}[0]{
begin{frame}ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


With this definition I can't use lstlistings because the frame has to be fragile.



So, I've tried to change the definition to:



newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


But it don't work with the error:



File ended while scanning use of next.


Here is my little example:



documentclass{beamer}

usepackage{listings}

newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}


Thank you for your help!










share|improve this question













I found a nice solution of re-using titles of beamer frames here by defining:



newenvironment{slide}[0]{
begin{frame}ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


With this definition I can't use lstlistings because the frame has to be fragile.



So, I've tried to change the definition to:



newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}


But it don't work with the error:



File ended while scanning use of next.


Here is my little example:



documentclass{beamer}

usepackage{listings}

newenvironment{slide}[0]{
begin{frame}[fragile]ifx insertsubsection empty
frametitle{insertsection} else
frametitle{insertsubsection}framesubtitle{insertsection} fi
}{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}


Thank you for your help!







beamer listings






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 28 '18 at 14:44









mrbela

3901212




3901212












  • Hiding the frame environment behind a new name is a very bad idea. Why not redefine the frametitle to show the section and subsection? Should all frames have the section and subsection as farmetitle, or only this frame?
    – samcarter
    Dec 28 '18 at 14:50












  • @samcarter: I agree that with beamer, redefining title may be easier, but could you explain why using another name is a bad idea? The only reason I can think about is that using other names make parsing and scripting more complicated.
    – sztruks
    Dec 28 '18 at 15:13










  • @sztruks Oh, there are a couple of reasons - in no particular order: It often reduces the functionality, because redefinitions often don't think about optional arguments, e.g. begin{frame}<beamer:1-4|handout:0>[plain]{frametitle}{subtitle}. -- If the appearance of the frametitle should be changed the corresponding template should be adjusted instead of working around like this -- In my opinion it obscures the code with no gain -- It makes the code less portable between presentations and more difficult to create MWE.
    – samcarter
    Dec 28 '18 at 15:42










  • @sztruks cont. -- it tempts users to use dangerous options like allowframeberaks or fragile as default for all frames.
    – samcarter
    Dec 28 '18 at 15:43












  • @samcarter Thanks. I was wondering if I should turn my comment to a question, to whom your answer would be accepted (provided it hasn't already been asked, of course).
    – sztruks
    Dec 28 '18 at 15:46


















  • Hiding the frame environment behind a new name is a very bad idea. Why not redefine the frametitle to show the section and subsection? Should all frames have the section and subsection as farmetitle, or only this frame?
    – samcarter
    Dec 28 '18 at 14:50












  • @samcarter: I agree that with beamer, redefining title may be easier, but could you explain why using another name is a bad idea? The only reason I can think about is that using other names make parsing and scripting more complicated.
    – sztruks
    Dec 28 '18 at 15:13










  • @sztruks Oh, there are a couple of reasons - in no particular order: It often reduces the functionality, because redefinitions often don't think about optional arguments, e.g. begin{frame}<beamer:1-4|handout:0>[plain]{frametitle}{subtitle}. -- If the appearance of the frametitle should be changed the corresponding template should be adjusted instead of working around like this -- In my opinion it obscures the code with no gain -- It makes the code less portable between presentations and more difficult to create MWE.
    – samcarter
    Dec 28 '18 at 15:42










  • @sztruks cont. -- it tempts users to use dangerous options like allowframeberaks or fragile as default for all frames.
    – samcarter
    Dec 28 '18 at 15:43












  • @samcarter Thanks. I was wondering if I should turn my comment to a question, to whom your answer would be accepted (provided it hasn't already been asked, of course).
    – sztruks
    Dec 28 '18 at 15:46
















Hiding the frame environment behind a new name is a very bad idea. Why not redefine the frametitle to show the section and subsection? Should all frames have the section and subsection as farmetitle, or only this frame?
– samcarter
Dec 28 '18 at 14:50






Hiding the frame environment behind a new name is a very bad idea. Why not redefine the frametitle to show the section and subsection? Should all frames have the section and subsection as farmetitle, or only this frame?
– samcarter
Dec 28 '18 at 14:50














@samcarter: I agree that with beamer, redefining title may be easier, but could you explain why using another name is a bad idea? The only reason I can think about is that using other names make parsing and scripting more complicated.
– sztruks
Dec 28 '18 at 15:13




@samcarter: I agree that with beamer, redefining title may be easier, but could you explain why using another name is a bad idea? The only reason I can think about is that using other names make parsing and scripting more complicated.
– sztruks
Dec 28 '18 at 15:13












@sztruks Oh, there are a couple of reasons - in no particular order: It often reduces the functionality, because redefinitions often don't think about optional arguments, e.g. begin{frame}<beamer:1-4|handout:0>[plain]{frametitle}{subtitle}. -- If the appearance of the frametitle should be changed the corresponding template should be adjusted instead of working around like this -- In my opinion it obscures the code with no gain -- It makes the code less portable between presentations and more difficult to create MWE.
– samcarter
Dec 28 '18 at 15:42




@sztruks Oh, there are a couple of reasons - in no particular order: It often reduces the functionality, because redefinitions often don't think about optional arguments, e.g. begin{frame}<beamer:1-4|handout:0>[plain]{frametitle}{subtitle}. -- If the appearance of the frametitle should be changed the corresponding template should be adjusted instead of working around like this -- In my opinion it obscures the code with no gain -- It makes the code less portable between presentations and more difficult to create MWE.
– samcarter
Dec 28 '18 at 15:42












@sztruks cont. -- it tempts users to use dangerous options like allowframeberaks or fragile as default for all frames.
– samcarter
Dec 28 '18 at 15:43






@sztruks cont. -- it tempts users to use dangerous options like allowframeberaks or fragile as default for all frames.
– samcarter
Dec 28 '18 at 15:43














@samcarter Thanks. I was wondering if I should turn my comment to a question, to whom your answer would be accepted (provided it hasn't already been asked, of course).
– sztruks
Dec 28 '18 at 15:46




@samcarter Thanks. I was wondering if I should turn my comment to a question, to whom your answer would be accepted (provided it hasn't already been asked, of course).
– sztruks
Dec 28 '18 at 15:46










1 Answer
1






active

oldest

votes


















4














You need to use the environment option. As verbatim environments are a bit special concerning environment endings it has to be known how the environment is called.



Btw: I replaced your low-level ifx tests with etoolbox commands to ensure they even work when empty is defined ;)



documentclass{beamer}

usepackage{listings}

newenvironment{slide}{
begin{frame}[fragile,environment=slide]
ifdefvoid{insertsubsection}{%
frametitle{insertsection}}{%
frametitle{insertsubsection}framesubtitle{insertsection}}}
{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}





share|improve this answer





















  • @mrbela You're welcome :)
    – TeXnician
    Dec 28 '18 at 15:06











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
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f467672%2fproblems-with-fragile-frames-in-beamer%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









4














You need to use the environment option. As verbatim environments are a bit special concerning environment endings it has to be known how the environment is called.



Btw: I replaced your low-level ifx tests with etoolbox commands to ensure they even work when empty is defined ;)



documentclass{beamer}

usepackage{listings}

newenvironment{slide}{
begin{frame}[fragile,environment=slide]
ifdefvoid{insertsubsection}{%
frametitle{insertsection}}{%
frametitle{insertsubsection}framesubtitle{insertsection}}}
{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}





share|improve this answer





















  • @mrbela You're welcome :)
    – TeXnician
    Dec 28 '18 at 15:06
















4














You need to use the environment option. As verbatim environments are a bit special concerning environment endings it has to be known how the environment is called.



Btw: I replaced your low-level ifx tests with etoolbox commands to ensure they even work when empty is defined ;)



documentclass{beamer}

usepackage{listings}

newenvironment{slide}{
begin{frame}[fragile,environment=slide]
ifdefvoid{insertsubsection}{%
frametitle{insertsection}}{%
frametitle{insertsubsection}framesubtitle{insertsection}}}
{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}





share|improve this answer





















  • @mrbela You're welcome :)
    – TeXnician
    Dec 28 '18 at 15:06














4












4








4






You need to use the environment option. As verbatim environments are a bit special concerning environment endings it has to be known how the environment is called.



Btw: I replaced your low-level ifx tests with etoolbox commands to ensure they even work when empty is defined ;)



documentclass{beamer}

usepackage{listings}

newenvironment{slide}{
begin{frame}[fragile,environment=slide]
ifdefvoid{insertsubsection}{%
frametitle{insertsection}}{%
frametitle{insertsubsection}framesubtitle{insertsection}}}
{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}





share|improve this answer












You need to use the environment option. As verbatim environments are a bit special concerning environment endings it has to be known how the environment is called.



Btw: I replaced your low-level ifx tests with etoolbox commands to ensure they even work when empty is defined ;)



documentclass{beamer}

usepackage{listings}

newenvironment{slide}{
begin{frame}[fragile,environment=slide]
ifdefvoid{insertsubsection}{%
frametitle{insertsection}}{%
frametitle{insertsubsection}framesubtitle{insertsection}}}
{end{frame}}

begin{document}

begin{slide}
begin{lstlisting}[caption={A simple listing.}, label={lst:simple}]
public static void main(String args) {
// hello world
}
end{lstlisting}
end{slide}

end{document}






share|improve this answer












share|improve this answer



share|improve this answer










answered Dec 28 '18 at 14:52









TeXnician

24.6k63087




24.6k63087












  • @mrbela You're welcome :)
    – TeXnician
    Dec 28 '18 at 15:06


















  • @mrbela You're welcome :)
    – TeXnician
    Dec 28 '18 at 15:06
















@mrbela You're welcome :)
– TeXnician
Dec 28 '18 at 15:06




@mrbela You're welcome :)
– TeXnician
Dec 28 '18 at 15:06


















draft saved

draft discarded




















































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.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • 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.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f467672%2fproblems-with-fragile-frames-in-beamer%23new-answer', 'question_page');
}
);

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







Popular posts from this blog

Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

ComboBox Display Member on multiple fields

Is it possible to collect Nectar points via Trainline?