* ClassPag now supports some page requests in the position request field.
Use "F1" through "F9" to request the first through the ninth page of the session and "B1" through "B9" to request the first through the ninth page from the end of the session. This request can be useful in interfaces that can't send separate position and page requests. In addition, ClassPag allows setting default position requests by classification, so interfaces that can't send any type of request can create classes for ads with front or back page requests, and the class nesting records for those classes can specify a default position request with one of the new values.
* The new F# requests now work better after changing the page range.
* This release of ClassPag is the first to be built with gcc-8.1.0.
* Fixed a problem where reading new interface files from an SCS XML interface would not always force a rebuild of the sort file.
* The readcsv interface program has -rc and -rd options for reading SHP ADP classified and display TSV files.
* ClassPag now shows conflicts in more cases for classes without headers when you drag a line ad out of classification.
* The product configuration screen "Classified Heading Placement" has a new field "Place over display ads... For" to control where ClassPag places headers over display ads.
The default value is 'CLASS' to place headers over display ads only when the ad above has a different class.
'COLHDR' currently works like 'CLASS'.
Use 'ALWAYS' to place headers when line ads flow over a display ad, even if the line ads have the same class as the display ad.
Use 'NEVER' to avoid placing class headers over display ads.
The field "Place over display ads" controls whether ClassPag places headers only on one column displays and whether ClassPag places parent headers.
* ClassPag now supports segmenting ads created by QuarkXPress(R) for Windows 4.11. Set the "Auto Segment Ads" field on the "Legal and Segmented Ad Specifications" screen of the product configuration to "QXD4".
* Fixed a problem inserting class name records in products that do not have class names in an alternate product.
* ClassPag has more control over wrapping segmented ads.
The product configuration screen "Legal and Segmented Ad Specifications" has a new field "Min Start Count" to specify the minimum number of segments that must fit in a column before starting to place a segmented ad.
The default value is 0. When ClassPag considers placing a segmented ad at the bottom of a column, it will try to satisfy both "Minimum First Segment" and "Min Start Count". Setting "Min Start Count" can be useful when some ads start with a photo, and you want to ensure text under the photo without forcing a large "Minimum First Segment" on all ads.
* Updated the readdn, readnn, and readnac interface programs to work better on large volumes.
* Updated the SCS Product XML schema to increase the number of decimal places in heights from 3 to 5. This requires updating to the SCS 4GL tools from June 2, 2018, or later. In the new schema, heightType has totalDigits increased from 7 to 9 and fractionDigits increased from 3 to 5.
SCS applications continue to write heights with 3 decimal places so third party interfaces do not need any changes for now.
* ClassPag now supports spice preferences settable by user.
The ClassPag start-up script now sets APP_PREF_FILE to .$USER.cpag
The start-up script now sets USER to $LOGNAME if USER is empty.
* XML import now checks for sort keys in "class_sort" if "class_sort_key" is empty. Interfaces should use "class_sort_key" because it is 32 characters while "class_sort" is only 10 characters.
* The readxtag interface program has new options -1 for one ad per file,
-n to extract the ad number of the first ad from the file name,
-s to enable segmentation, and -m <name> to read a TSV ad manifest.
The ad manifest specifies which ads are breakable, so the -s option is not necessary unless you want to force all ads to be breakable.
When readxtag has an ad manifest, it sets the run date, the class, and the reserved ad depth.
* The readxtag interface can now map postscript font names to composition names using names in the composition fontdef table.
* The makextag.sh interface script has a new -adt option to look for files with the extension adt instead of the default xtg.
makextag.sh uses the most recent sort galley file as the ad manifest.
makextag.sh also accepts the new readxtag -1, -n and -s options.
* The mapclass interface program has a new PNG option that runs makextag.sh.
* ClassPag now supports tearsheets. The tearsheet value is a five-digit number between 0 and 32000, inclusive. Pass it in the sort file in 0-based columns 416-420 or in the "tearsheets" element of the SCS Product XML. ClassPag shows the tearsheet count in the ad information window and writes it into the SCS Extended Product XML.
* The "Ad and Class Conversions" screen of the product configuration has a new field "Try XML classsort if sortkey is empty" to control whether ClassPag checks the "class_sort" element of SCS Product XML records if "class_sort_key" is empty. The default is to check "class_sort". Interfaces should use "class_sort_key" because "class_sort" is limited to 10 characters.
* processxml.sh has a -ts option to try "class_sort" if "class_sort_key" is empty. The ClassPag import procedure sets this option according to the product configuration, but if you run processxml manually, you can set this option.
* ClassPag now writes the "class_sort_key" element to the SCS Extended Product XML in addition to the "class_sort" element.
* The "Just" field in page name records (to control square-offs) has two new values "FULL" and "FEXP". Both produce multi-page square-offs with full pages that have the requested height and the full page width and a partial page that has the requested width. "FEXP" is like "FULL" except that ClassPag adds fillers to increase the height of full pages to the requested height.
"FEXP" can be useful in a two-page square-off where the "full" page needs to fill the space under a large display ad.
* setup.sh in batch mode no longer gets a warning from stty.
* The square-off "Just" values "FULL" and "FEXP" now try making a full page before making a partial page if the partial page width is equal to the full page width.
* ClassPag now writes the "original_class_code" element to the SCS Extended Product XML. The "class_code" element continues to have the mapped class.
This differs from the outext, which has only one class field and a configuration option to set whether that field has the original or mapped class.
* Added a dinkwhite.ps file that draws a white box, the opposite of black.ps.
The existing white.ps is transparent. Use dinkwhite.ps when you want to create a white background layer.
* Expressions can check for dinks. This can be useful if you want to place a background under a dink or if you want to place an alternate image if a dink is missing. Set O_CPagDinkName to the name of the dink that you are looking for, then when you read I_CPagDinkName, it will be the file with the dink image (if the dink is loaded in an active class in the pagination engine) or an empty string. For example, to place a white background under a dink, use the expression below in a type "E" (Composition expression) banner text item, where "2" is the dink id and the dink size is 172pt x 171pt.
(O_CPagDinkName := "2";
((I_CPagDinkName = "")? "": "<zl 172t,171t,LogoFile:/u/cpag/dinkwhite.ps>"))
* The "original_class_code" SCS Extended Product XML element now works for agate ads also.
* The square-off "Just" values "FULL" and "FEXP" now handle a small depth limit better.
* The square-off "Just" values "FULL" and "FEXP" now work better with the partial page last.
* The "Move square-off" button works better on multi-page square-offs.
* Changing the width of a square-off that has no ads over it now no longer frees all of the ads on the page.
* Fixed a problem where square-offs built from the top of the page would not account for normal ads above them.
* The "Open square-off" button can now be enabled and disabled from the "Toolbar Button Preferences" screen of the product configuration or from a right click on the tool bar.
* The SCS Product XML interface now sets a kill request for ads with ad_layout:killed set to 'true' or with transaction_code set to 'R'.
* The readcsv interface program has an -ic option for reading IND APT classified TSV files.
* This release of ClassPag is the first to be built with gcc-8.2.0.
* Fixed a problem where ClassPag would sometimes place fillers on locked pages.
--- Screen captures ---
Version 10.43 changes
Configuration for the new "Place over display ads... For" parameter for class header placement.
Configuration for the new "Min Start Count" parameter for flowing legal ads.
Example page where the new segment count is useful.
Most of the ads start with a large segment that contains a photo. The ad at the bottom of the second last column has no photo and can start with a few segments. Before this change, you would need to set a minimum flow depth of at least the depth of the photos plus the depth of a typical segment to keep the photos from being separated, and ClassPag would not be able to start flowing ads without photos in small spaces at the bottom of a page.
Version 10.45 changes
Section of a page of legal ads composed from xtags.
Version 10.46 changes
The ad information box now shows the tearsheet counts of ads with tearsheets.
Configuration for the "Try XML classsort if sortkey is empty" parameter.
Version 10.47 changes
The new square-off "FEXP" Justify option.
The corresponding square-off.
The partial page is 3 columns wide and the full page is 12 inches high. This can be useful when you need to leave space for a block of news above a multi-page square-off.
Version 10.51 changes
Configuration to hide the "Open Square-off button".