]> git.lyx.org Git - lyx.git/blobdiff - src/output_latex.C
Implement os::current_root for native Win32 builds.
[lyx.git] / src / output_latex.C
index b50748dd5274fb6c56fdf75f48613165a387142f..3fb0fe5d3dc461d86f7f12aef525868941985033 100644 (file)
@@ -195,18 +195,22 @@ TeXEnvironment(Buffer const & buf,
 }
 
 
-InsetOptArg * optArgInset(Paragraph const & par)
+int latexOptArgInsets(Buffer const & buf, Paragraph const & par,
+                     ostream & os, OutputParams const & runparams, int number)
 {
-       // Find the entry.
+       int lines = 0;
+
        InsetList::const_iterator it = par.insetlist.begin();
        InsetList::const_iterator end = par.insetlist.end();
-       for (; it != end; ++it) {
-               InsetBase * ins = it->inset;
-               if (ins->lyxCode() == InsetBase::OPTARG_CODE) {
-                       return static_cast<InsetOptArg *>(ins);
+       for (; it != end && number > 0 ; ++it) {
+               if (it->inset->lyxCode() == InsetBase::OPTARG_CODE) {
+                       InsetOptArg * ins =
+                               static_cast<InsetOptArg *>(it->inset);
+                       lines += ins->latexOptional(buf, os, runparams);
+                       --number;
                }
        }
-       return 0;
+       return lines;
 }
 
 
@@ -308,10 +312,13 @@ TeXOnePar(Buffer const & buf,
                os << '\\' << style->latexname();
 
                // Separate handling of optional argument inset.
-               if (style->optionalargs == 1) {
-                       InsetOptArg * it = optArgInset(*pit);
-                       if (it)
-                               it->latexOptional(buf, os, runparams);
+               if (style->optionalargs > 0) {
+                       int ret = latexOptArgInsets(buf, *pit, os, runparams,
+                                                   style->optionalargs);
+                       while (ret > 0) {
+                               texrow.newline();
+                               --ret;
+                       }
                }
                else
                        os << style->latexparam();