Tech Write Tips

January 11, 2007

Best Practice: Search and Replace

Filed under: Best Practice — AndyR @ 1:15 pm

mag.gifOnce you have your topics in a strict XHTML form, you are able to work with them in more detail. You can use the ‘strict-ness’ to ensure that the content is more consistent.
Although this primarily enables you to use XSL transforms to check and move the content into any required format, it is often overlooked that the clean content is primed for a plethora of searches to ensure your standards are being applied.

A tool such as textpad provides enables you to performing the following S&Rs:

  • Terminology: Simple search for terms that are not used by your house style.
  • Formatting: Search that particular terms have the appropriate xhtml formatting.
  • Linking: Search to ensure all instances of particular types of elements are linked. For example, all instances of ‘dialogs’ and ‘tabs’ link to the appropriate topic.

Care should be taken when doing a global S&R as there is as much potential for creating global problems as there is for fixing them.

Textpad enables you to use regular expressions to refine these searches. Regular expressions 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.

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.

November 22, 2006

Flare 9 – XML Editor 2

Filed under: Madcap Flare,Tool — AndyR @ 1:05 am

In this post we dig a little deeper into Flare’s neat XML Editor. If you’ve not read the previous post on this it would probably be a good idea to swing by and read that first.

First we should highlight that these icons are only available when you are in non-tag editing mode. It appears that this is the mode that Madcap expect us to use for the majority of editing. It seems to get more attention for bug fixes and enhancements than the tag view. And when you are used to it, it is very quick and flexible.

xmledit_continuelist.gifContinue List
This icon appears when you have pressed return at the end of a nested ordered list. If you click the icon it will continue the parent list, if you don’t you insert paragraphs.

xmledit_resizeimage.gifImage Resize
This icon appears on inserted images and enables you to manually resize the image, maintaining its aspect.

xmledit_insert.gifInsert Pointers
These two place holders appear when you are dragging an item onto a topic from the Content Explorer, File list or TOC. It is useful to understand the two pointers as they enable you to both located where you were working before you dragged the item, and accurately place the item you are dragging.

This appears if you hover over an anchor tag. It displays the location of the link. If it is blank, the linked topic could not be found, or was not valid XHTML.

So there we have it, a few more tit-bits for you guys. Let  me know if you’ve spotted any other useful behaviour!

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.


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


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


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


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


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


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


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


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


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:
    <SolidColorBrush Color=”Blue”/>
    <SolidColorBrush Color=”Red”/>
  This is a 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 18, 2006

Best Practice: Screen Estate

Filed under: Best Practice,Tip — AndyR @ 12:55 pm

As mentioned in the Jenson Blog recently, screen real-estate is at an all time premium. When you see how much time and effort is spent ensuring software doesn’t needlessly waste screen real-estate, it makes you realise the responsibility we have as authors to use the help window wisely.

Alot of benefit can be gained by considering ways in which we can make best use of the space.

  • Provide navigation within each topic so the users doesn’t have to open the TOC to move around the help.
    • Breadcrumb trail
    • Cross Topic links
    • See Also links
  • Open the HTMLHelp with TOC minimised
  • Desgin topics to fit in smaller portion of screen.
    • Screen shots width is critical
    • Tables used for content or layout should fit width
  • Avoid scroll bars appearing by fitting content to one window
    • Turn off test on the HTMLHelp toolbar buttons
    • Provide help topic in a pane contained in the application.
    • Turn off keep help on top.

August 16, 2006

Flare 5: Adding Advanced HTMLHelp Features

Filed under: HTMLHelp,Madcap Flare,Tip,Tool — AndyR @ 12:38 pm

htmlhelpworkshop1.gifIn this post, we return to some more nuts and bolts issues regarding Flare and HTMLHelp.

Flare current provides the majority of HTMLHelp settings, and does this in a much more flexible way that HTMLHelp workshop does. Particularly useful are the WYSIWYG help window size and potitioning.

However, there are some advanced HTMLHelp settings (such as advanced help, or remembering the users last help settings) that are not currently available. Until these make it into the software you can still access these features by employing HTMLHelp workshop (which can be downloaded free from microsoft).

  1. Once you have finalised your help project.
  2. Generate the HTMLHELP output.
    Open the PROJECT\Output\USER\Temporary\Microsoft HTML Help\Content\_Temp.hhp in HTMLHelp Workshop.
  3. Click the Add/Modify Window Definitions button.
  4. Use the Window types dialog to make your advanced settings.
    1. The Navigation tab enables you to specify the Advanced search.
    2. The Positoin tab enables you to specify to save the users window position for help.
  5. Click OK to save the changes.
  6. Generate the help in HTMLHelp Workshop.
  7. You can then access your enhanced HTMLHelp .chm in the PROJECT\Output\USER\Temporary\Microsoft HTML Help\Content folder.

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”>

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 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:with-param name=”l” select=”$l”/></xsl:apply-templates> 
<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,’ /\.:-_’,”)}”/>)

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

Next Page »

Blog at