diff --git a/PROMS/Formats/fmtall/RGESAM1all.xml b/PROMS/Formats/fmtall/RGESAM1all.xml index c08a3e49..13ec2d2f 100644 Binary files a/PROMS/Formats/fmtall/RGESAM1all.xml and b/PROMS/Formats/fmtall/RGESAM1all.xml differ diff --git a/PROMS/Volian.Print.Library/Pagination.cs b/PROMS/Volian.Print.Library/Pagination.cs index 053543ba..9e74a785 100644 --- a/PROMS/Volian.Print.Library/Pagination.cs +++ b/PROMS/Volian.Print.Library/Pagination.cs @@ -116,6 +116,15 @@ namespace Volian.Print.Library if (MyItemInfo.MyParent.IsHigh && MyItemInfo.IsNote && (MyItemInfo.MyParent.Cautions == null || MyItemInfo.MyParent.Cautions.Count == 0) && MyItemInfo.MyPrevious == null) return 1; // if this is a substep that has a preferredpage break, and it has caution/note that is where the page break had to go if (MyItemInfo.IsSubStep && ChildrenAbove != null && ChildrenAbove.Count > 0) return 0; + // B2017-228: The following flags a break within the step. Before returning a '2' (flags break within step), clear it out of the + // ParaBreaks. Without the 'RemoveAt', a page break will occur after this step also. + string reason = "Unknown"; + if (MyPageHelper.ParaBreaks != null && MyPageHelper.ParaBreaks.Count > 0 && this == MyPageHelper.ParaBreaks[0]) + { + MyPageHelper.ParaBreaks.RemoveAt(0); + reason = AddReason("Partial Step - Case 1"); + ShowPageBreak(1, reason, "Yes", YSize, yPageSize, yWithinMargins, ManualPageBreak); + } return 2; } } @@ -157,10 +166,11 @@ namespace Volian.Print.Library bool isFirstChild = MyItemInfo.MyPrevious == null; bool nearTheTop = (yWithinMargins < yPageSize) && (yWithinMargins > (yPageSize - 5 * SixLinesPerInch)); // if step is breaking over a number of pages, determine if the current step is the - // location of a pagebreak. + // location of a pagebreak. ParaBreaks contains the paragraphs that break within a step. if (MyPageHelper.ParaBreaks.Count > 0) { string reason = "Unknown"; + // if on current step and it is also the substep that will cause a pagebreak, i.e. the top substep in pagebreaks[[0]: if (this == MyPageHelper.ParaBreaks[0]) { MyPageHelper.ParaBreaks.RemoveAt(0); @@ -168,6 +178,7 @@ namespace Volian.Print.Library ShowPageBreak(1,reason, "Yes", YSize, yPageSize, yWithinMargins, ManualPageBreak); return 2; // break on this item within a step } + // check for rnos: else if (MyPageHelper.ParaBreaks[0].CheckAlternates(this)) { MyPageHelper.ParaBreaks.RemoveAt(0); @@ -175,6 +186,7 @@ namespace Volian.Print.Library ShowPageBreak(1, reason, "Yes", YSize, yPageSize, yWithinMargins, ManualPageBreak); return 2; // break on this item within a step } + // PageBreakOnStep flags break for cautions/notes/HLS in backgrounds & deviations. else if (!MyPageHelper.ParaBreaks[0].PageBreakOnStep && this.YTopMost > MyPageHelper.ParaBreaks[0].YTopMost) { MyPageHelper.ParaBreaks.RemoveAt(0); diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index 3f6f878c..ddc636f8 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -1964,7 +1964,7 @@ namespace Volian.Print.Library else MyPromsPrinter.NeedSupInfoBreak = true; supInfoSect.StepSectPageBreaks.Add(MyItemInfo.ItemID); } - if (!firstHighLevelStep) + if (!firstHighLevelStep || (MyPromsPrinter.SupInfoPrintType == E_SupInfoPrintType.Merge && !MyPageHelper.CreatingSupInfoPage)) // B2017-229: Added supinfo print check to run facing page logic { YTopMost = OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin); if (MyPageHelper.NotesToFootNotes != null && MyPageHelper.NotesToFootNotes.Count > 0) MyPageHelper.NotesToFootNotesYoffset = CalculateYLocation(yLocation, yTopMargin); @@ -2793,6 +2793,7 @@ namespace Volian.Print.Library case E_ContBottomLoc.BottomOfPage: // place continue message at bottom of page //msg_yLocation = yBottomMargin + 2 * SixLinesPerInch + (float)docstyle.Layout.FooterLength; // 2 lines above bottom margin msg_yLocation = msg_yLocation + yBtmMarginForMsg + (float)docstyle.Layout.FooterLength; + // if (MyPageHelper.YMultiplier != 1.0F) msg_yLocation = msg_yLocation / MyPageHelper.YMultiplier; break; case E_ContBottomLoc.BelowBottom1: msg_yLocation = msg_yLocation + yBtmMarginForMsg;