Tech Write Tips

January 11, 2007

What Is (Are): Regular Expressions

Filed under: Madcap Flare,Technology,Tip,Tool,What is — AndyR @ 1:15 pm

regexp.gifRegular expressions are used to perform complex searches in software such as Flare and Textpad. They enable you to identify phrases that are not (“a^b”) followed by particular characters. They enable you identify phrases that can contain optional (“a|b”) sections.

Some examples of these phrases, used in practice by technical authors are as follows:

  • “[^=|(]”[^ |>|?|/|)]” – Find quotes not in HTML attributes. We only use single quotes. This expression locates any quotes not related to an HTML attribute, i.e. in the body of the topic text.
    • Avoids ‘” ‘ (end of attribute mid tag)
    • Avoids ‘”/>’ (end of attribute end tag)
    • Avoids ‘=”‘ (start of arrtibute)
    • Avoids ‘”?’ (header doctype)
    • Avoids ‘(“‘ (filename in quotes)
  • “[^,]” – Find the phrase without a preceeding comma. This is useful if you always use phrases of the form “To achieve XXX, perform the following”. It identifes any places you have missed the “,”.
  • “[^(his)|(he)|(current)] dialog[^<|s| |)]” – This assumes you provide links from procedural topics to screen topics. For example from “Student Dialog”. It works by identifying all occurences of “dialog” that are not proceeded with the end of the link “</a>”.
    • Avoids “This dialog”
    • Avoids “The dialog”
    • Avoids “Current dialog”
    • Avoids “dialogs”
    • Avoids “dialog “
    • Avoids “dialog)”
    • Finds “dialogs” not followed by “</a>”
  • “tab[^<|s| |e|a|l|]” – This assumes you provide links from procedural topics to screen topics. For example from “Student tab”. It works by identifying all occurences of “tab” that are not proceeded with the end of the link “</a>”.
    • Avoids “tabs”
    • Avoids “tab “
    • Avoids “tabe”
    • Avoids “taba”
    • Avoids “tabl” (table)
  • “[^(and)|(This)|(</a>)] Tab[^h|<|\.|”|l|e|s|a]” – We always have the control type (dialog, tab etc) in lowercase, this expression identifies any cases where “Tab” is uppercase and not the start of a sentance. It also rules out occurences inside “Table” etc.
  • “<img.*/> “– Images with spaces afterwards. We insert spaces after images via a css style, so need to ensure that the images don’t have “hard spaces” after them.
  • “[^ |>]<a” – Find links without whitespace before them.
  • “[^ |>|(]<b>” – Find bold text without whitespace after.
  • “<a.[^(href)]” – links with no href tag.
  • “href=””” – links with empty hrefs.

October 27, 2006

Flare 8 – XML Editor

Filed under: Madcap Flare,Navigation,Technology,Tip — AndyR @ 12:20 pm

Now that I’m getting more at home with Flare’s XML editor, and things are holding together better, and performing a lot faster, I thought it would be useful to give a run down of some the of intricacies.

The following are useful in the non-tag view:

Red control box: Appears when you highlight a section of text. Hover to expand, then left click to access the quick copy and paste menu.

xmledit_selected.gif

Yellow control box: Appears at the start of a tag section. Hover to expand, then left click to access the advanced tag editing menu.

xmledit_tag.gif

Tag Start: Cursor signifies the start of a xhtml tag.

xmledit_cursorstart.gif

Tag Middle: Cursor signifies you are within an xhtml tag and can edit the contents.

xmledit_cursormid.gif

Tag End: Cursor signifies the end of a xhtml tag.

xmledit_cursorend.gif 

Tag Between: Cursor signifies you are between tags. Type to enter text into the parent tag.

xmledit_cursorbetween.gif 

Tag Before – Level 1: Cursor size signifies you are in the first of a series of nested tags.

xmledit_cursorbefore1.gif

Tag Before – Level 2: Cursor size signifies you are in the second of a series of nested tags.

xmledit_cursorbefore2.gif 

Tag Before – Level 3: Cursor size signifies you are in the third of a series of nested tags.

xmledit_cursorbefore3.gif

There we have it. Hopefully these details will de-mysitfy this great little editor. I just need to talk mouse pointers now.

October 16, 2006

Flare 7: File List

Filed under: Information Types,Madcap Flare,Technology,Tip,Tool — AndyR @ 12:09 pm

filelist.gifFlare 2.0 further substantiates the breeding we have come to expect from the Madcap stable. This version introduces new features and beefs up performance. This is the first of a few posts that will focus on different features of Flare 2.0.

Today we address the new File List pane, available by selecting View | File List from the menu. As with all components of the Flare interface, this can be positioned to provide easy access as is appropriate to your working style.

The File List pane enables you to view all the files in your project in one list. This list can then be ordered and filtered as required. at first this doesn’t seem all that significant, but when combined with other components of Flare’s flexible interface it enables a number of productivity enhancements.

  • Image Pallet: By filtering the list to include images (*.gif; *.jpg) you can use the list as a source of images for your topics. Rather than having to browse to the required image you can simple drag-and-drop the image from the File List to the topic. Ensure you drag the image icon rather the the text.
  • Edited Files Pallet: By filtering the list to include html files (*.htm; *.html) and ordering by Date Modified you can use this as an unlimited recently list list. This complements the File | Recent Files menu, as it provides a longer list and potentially quicker access to the files.
  • StyleSheet Management: By filtering the list to include html files (*.htm;*.html) you can view the style sheet in use by each topic. Order the list by Style sheet to group the different style sheets together. This enables you to weed out old style sheets and ensure all topics are on the latest version of your style control.
  • Condition Management: By multi-selecting a collection (hold CTRL) or range (hold SHIFT) of topics, right-clicking and selecting Properties from the pop-up menu, you can specify Basic, Topic, Conditional and Language properties on multiple topics. This is particularly useful when managing conditional topics. You can also use the list, ordered by conditions, to further assist the management of conditional topics.
  • Topic Type Editing: By filtering the list by a particular file name you can edit a certain type of topics. (Assuming you have consistently named your topic files) This enables you to rename and edit these topics to ensure they are consistent. For example, filter by ‘*about.*’ to work with all the about topics.

All-in-all the File List pane provides some excellent additional ways of working. Once it includes the ability to view which topics are in the TOC and Index, and filter by folders it will become a key way of working with Flare 2.0.

October 6, 2006

What is: XAML (authoring’s best kept secret)

Filed under: Future-proofing,Technology,Tip,Vista,What is — AndyR @ 12:02 pm

microsoft-expression.gifXAML is an XML file that defines user interfaces. It not only defines the frames, buttons, fields but also introduces any other visual effect that the interface may require. In a similar way to Flash interfaces, XAML provides a rich user experience with a variety of graphical effects.

XAML, a markup language to declaratively represent user interface for Windows applications, improving the richness of the tools with which developers and designers can compose and repurpose UI.

For example, you could define a button as follows:
<Button>
  <Button.Background>
    <SolidColorBrush Color=”Blue”/>
  </Button.Background>
  <Button.Foreground>
    <SolidColorBrush Color=”Red”/>
  </Button.Foreground>
  This is a button
</Button>

So what! How does this help the technical author? Here we find one of the best kept secrets of this new technology. Whilst its benefits for programmers and designers is often highlighted:

“One great benefit of XAML is that it helps to separate design and development, which actually helps to improve collaboration and efficiency between designers and software developers.”

What is less publicised is how this opens up the development process to other players, such as the technical author. Not only does this help close the great divide between authors and devlopers, it also starts to provide a route to achieving the sort of user guidance offered by Assistance Platform.

Firstly, it becomes a possibility for the technical author to become the owner of all the text in the appication. The user interface text in the XAML files can easily be updated with little programming knowledge.

Sceondly, it also become possible to generate templates for dialog help, as the XAML can be transformed with an XSL to produce a XHTML page that lists all the fields and includes notes as the starting point of the help project.

Thirdly, the XAML itself can also be checked from a consistency perspective. An XSL file can run through the file checking it aganist the companies interface standards. Again this helps the technical author flag up any issues with the user interface.

We find that this helps, authors move towards providing more wide spread User Assistance than simple help files. Aspects of Vista, such as super tooltips, require much more integration between the help content and the application. XAML provides a means for us, technical authors, to play our part to achieve this.

August 24, 2006

Flare 6: Customise Your Environment

Filed under: Madcap Flare,Technology,Tip — AndyR @ 12:39 pm

As mentioned previously , now that many of us have been using Flare for some time, we have spent considerable time diggin around and ticking out our Flare workspace to best fit our working practice.

I thought it might be useful to share these layouts with each other, and give an overview of what you can achieve. To that end, the following layouts have prooved popular:

flarecompact.gifCompact: Uses the minimal space to provide the maximum information about the help. You can see the Content, TOC and edit two topoics symaltaneously.

flaremulti1.gifMulti-tasker: Provides a good varied coverage of information. The full height Content and TOC enable you to view a larger portion of these treeviews. It also retains access to the Start Page to enable quick access to your projects.

flareclean1.gifMinimalist: This provides the minimum of clutter in the interface, just the Content and one Topic. If you know your hotkeys well this can be further minimalised by turning off unwanted toolbars.

flaresandwich1.gifSandwich: This provides the topic in the middle, sandwiched between the Content and TOC panes. This enables a quite view of all key information, whilst keeping the focus on the content being edited.

flaretwomonitors.gifDual Monitor: This enables you to have one topic on the right monitor providing additional space on the original screen. 

flaremultiproject.gifMultiple Progects: This enables you to quickly switch between different projects via the open project pane that has been “floated” off to the right. In my setup I combine this with a dual screen system to good affect.

Let me know how you have yours layed out and I’ll add it to the list.

August 3, 2006

Best Pratice: Flare 4 – High Definition PDF Part 3

Filed under: Madcap Flare,Technology,Tool — AndyR @ 12:47 pm

Having sketched out an approach that enables you to produce a high qualifty fully featured PDF document from your Flare content, we will now look at some of the technical hurdles to establishing this technique.

XSL Issues : Access each of the files in the Flare TOC

You need to pass you flare toc into the XSL then use that to call each XHTML file referenced in the Flare TOC to then output the required content.

    <xsl:for-each select=”TocEntry”>
      <xsl:for-each select=”document(@Link)//BODY”>
       <fo:block color=”#2A2A2A” font-size=”10pt” font-weight=”normal” space-before=”6pt”>
        <xsl:apply-templates/>
       </fo:block>
      </xsl:for-each>

XHTML Issues: Convert content from XHTML to XML FO

Your template needs to handle each of the XHTML tags you are using in your topics and convert them to an XML FO syntax. For example <P> tags can be converted as follows: 

<xsl:template match=”p|P”>
  <fo:block keep-with-next=”always” text-align=”justify” color=”#2A2A2A” font-size=”10pt” font-weight=”normal” space-before=”6pt”>
   <xsl:apply-templates/>
  </fo:block>
 </xsl:template>

XSL Issue: Identify the location of Images

Your XSL template needs to take the relative SRC attribute for <IMG> tags and work out the actual location of the image file implied by this value. A template can be constructed in XSL to calculate the location.

XSL Issue: Cross Referencing from Anchor tags

Your XSL template needs to calculate the abolosute location referred to by each <A> tag. This can be achieved by using the current location in the TOC Flare that the XSL is passing, and the HREF attribute of the <A> to construct the absolute position.

This position can then be used as a unique id for XML FO cross reference (where $current is the calculated value of this absolute reference):

<fo:inline margin-left=”-10mm”>
  <fo:basic-link margin-left=”-20mm” text-decoration=”underline” internal-destination=”{translate($current,’/\.:-_’,”)}”>
      <xsl:apply-templates>
      <xsl:with-param name=”l” select=”$l”/></xsl:apply-templates> 
  </fo:basic-link>
</fo:inline>
<fo:inline text-decoration=”none” space-end=”-2.5mm” font-size=”7pt”>
      (see page <fo:page-number-citation text-align=”right” ref-id=”{translate($current,’ /\.:-_’,”)}”/>)
</fo:inline> 

We will be adding to this and expanding on examples as the discussion develops in the comments.

July 20, 2006

Best Pratice: Flare 4 – High Definition PDF Part 2

Filed under: Best Practice,Madcap Flare,Technology — AndyR @ 7:00 am

Having introduced the concept of high definition PDF’s output straight from Flare’s source files with minimal post-production, we can now start to dig into the technologies that are used to produce it.

pages1.gif

The XSL style sheet produces the following sections of XML-FO :

  • Page Layout Definitions
    • Page Sizes and Layout
    • Branded Headers and Footers
    • Odd Even Pages
  • Branded Title Pages
  • It firstly calls the Flare TOC file, using the @Title element, to create the bookmarks for the pdf.
  • It secondly calls the Flare TOC file, using the @Title element to create a structure for the document.
    • Table of Contents
    • Chapters
    • Main Headings
  • It thirdly calls the Flare TOC file, using the @Link element to locate each topic in turn.
    • Each topic is then added to the above structure.
  • Branded Back Pages 

This is all wrapped up as one big XML-FO file.

The XML-FO file is then passed into the Apache FOP engine which outputs the PDF document.

In the next part we’ll look at some of the key issues to solve with this process and the code you can use to overcome them.

July 19, 2006

Best Pratice: Flare 4 – High Definition PDF Part 1

Filed under: Best Practice,Madcap Flare,Technology — AndyR @ 6:59 am

prime.jpgIn this article we take things up a notch. This enters the realm of the real tech tip. If you want your authoring tool to do everything for you and don’t want to delve into CSS, XML and XSL then maybe you should move onto the next post.

Those still reading, lets roll our sleves up and have a look under the hood. The aim of todays article to to produce a high quality pdf document that has at least the following features:

  • Front Matter
    • Graphical Front and Back page
    • Table of Contents for the book
  • Separate Chapters
    • Mini Table of Contents for each Chapter
    • Chapter name in the header
    • Clickable links from Table of Contents to relevant section
    • Marginalia (notes, references, notifiers)
  • Full Bookmark tree.
  • Odd/Even Pages
  • Odd/Even Headers and Footers

Bit of a tall order, maybe. But with the following technology you can achieve this from your Flare source files. Once setup you can then generate it at the click of a button.

The technology we will be using are XML, XSL, XPATH and XML-FO. In part 2 we will detail the steps in this process.

July 3, 2006

Screen Portrait Mini’s

Filed under: Best Practice,Technology — AndyR @ 5:00 pm

Further to our discussions about screen portraits (our cell shaded alternative to screen shots) Another case for the importance of screen portraits is the fact that Vista Super Tooltips enable you to include images in the popup pane.

These images can provide graphical clues about the use of a function, or provide a preview of the dialog that will appear when an operation is selected.

These inevitably nudge us back towards providing more screen shots, and therefore greatly increase the maintenance load on the online help (or should we now say User Assistance). If a screen portion or layout is adjusted you suddely have a stack of updating to do in the help files.

Screen portraits enable you to include these graphical enhancements to toolstips and topics, but minimise the maintenance cost. You should not need to update the images unless a screen or function has been completely revised. If this is the case you would likely want to revisit the help in any case.

June 28, 2006

HTMLHelp Multiple Page Printing

Filed under: HTMLHelp,Technology — AndyR @ 6:55 am

HTMLPrint.gifIt wasn’t until I was reading of another authors struggle to get multiple topics printing correctly out of HTMLHelp that I realised that I had hit the problem myself. If you haven’t tried it you should try multiple page printing for your HTMLHelp and see if it still has your style applied.

The issue is that when you print multiple topics from a .chm it doesn’t just print each topic in turn. What happens is an intermediate html file is created from the selected topic. 

You can view this file as follows:

  1. Right clicking a book in the TOC of your .chm.
  2. Selecting print all topics. Leave the Print dialog open and browse to “C:\Documents and Settings\USERNAME\Local Settings\Temp”.
  3. Sort this folder by date, and you should see an .htm file thats name starts with “~hh…”.
  4. Open this file in a text editor to view how it has been compiled.
  5. Note the single <Head> section, and updated SRC sttributes for <IMG> tags.
  6. Also note the location of the .css which will reference your .chm absolutely but include the relative path from the topic and therefore not work.

Head Problem
This intermediate file only has one head section. This can cause a few headaches such as the IE header states the first topic on all printed pages. But worse than this is that if you have included any script calls or any automation in your header, or if you have a script that references header information will not work. In my case I was generating the topic title from the page title tag in the header. Therefore when I printed mulitple pages they all had the same header. Doh!

This is something that you may need to work around for your printed output. In my case I ended up including a hidden topic title that was then turned on just for printing via a “@media print {H1.print {display:block}}” in my style sheet.

CSS and JS Location Problem
This intermediate file is generated in a temp folder. To ensure that the images are displayed correctly the print routine automatically adjusts the src elements to reference from its new location. However, if you have referenced a .css or .js it doesn’t update the location.

To get around this you need to implement an absolute location to these files in your topics. You are essentially replacing the relative location (“../../Style.css”) with an absolute location (“ms-its:HELP.chm::Style.css”). These absolute references are dealt with properly in the intermediate file for printing.

Next Page »

Create a free website or blog at WordPress.com.