check that the section's alignment characteristics are sensible for
the use of \c{ALIGN} or \c{ALIGNB}.
+Both \c{ALIGN} and \c{ALIGNB} do call \c{SECTALIGN} macro implicitly.
+See \k{sectalign} for details.
+
See also the \c{smartalign} standard macro package, \k{pkg_smartalign}.
\S{sectalign} \i\c{SECTALIGN}: Section Alignment
The \c{SECTALIGN} macros provides a way to modify alignment attribute
-of output file section. Unlike the \c{align=} attribute allowed at section
-definition only the \c{SECTALIGN} macro may be used any time you need it.
+of output file section. Unlike the \c{align=} attribute (which is allowed
+at section definition only) the \c{SECTALIGN} macro may be used at any time.
-For example the statement
+For example the directive
-\c
\c SECTALIGN 16
-\c
-sets a section alignment requirement to 16 bytes. Note that once increased
-the section alignment can not be decreased, the magnitude can grow only.
+sets the section alignment requirements to 16 bytes. Once increased it can
+not be decreased, the magnitude may grow only.
+
+Note that \c{ALIGN} (see \k{align}) calls the \c{SECTALIGN} macro implicitly
+so the active section alignment requirements may be updated. This is by default
+behaviour, if for some reason you want the \c{ALIGN} do not call \c{SECTALIGN}
+at all use the directive
+
+\c SECTALIGN OFF
+
+It is still possible to turn in on again by
-It must be also noted that \c{SECTALIGN} gets called implicitly inside \c{ALIGN}
-handler and as result \c{ALIGN} may update section alignment.
+\c SECTALIGN ON
\C{macropkg} \i{Standard Macro Packages}
__SECT__
%endmacro
+%define __SECTALIGN_ALIGN_UPDATES_SECTION__ 1
%imacro sectalign 1.nolist
- [sectalign %1]
+ %ifnum %1
+ %if __SECTALIGN_ALIGN_UPDATES_SECTION__ = 1
+ [sectalign %1]
+ %endif
+ %else
+ %ifidni %1,off
+ %define __SECTALIGN_ALIGN_UPDATES_SECTION__ 0
+ %elifidni %1,on
+ %define __SECTALIGN_ALIGN_UPDATES_SECTION__ 1
+ %endif
+ %endif
%endmacro
%imacro absolute 1+.nolist