Tokens for Custom Field Set with Multiple Records
You will need to create a custom token for this. Hook_civicrm_tokens is where you assign names to your tokens, and hook_civicrm_tokenValues is where you define the business logic. You will use the API to retrieve the custom field values for each contact, and loop through those values to build your HTML table. Below is an example of the basic API call, for contact 465 to return all the entries for Custom Field 12. Using CustomValue API is a bit different from the others as you'll see from the return.fieldname =&gt; 1 bit:

$result = civicrm_api3('CustomValue', 'get', array(
  'sequential' =&gt; 1,
  'entity_id' =&gt; 465,
  'entity_type' =&gt; "Contact",
  'return.custom_12' =&gt; 1,
));


This is a sample of the result:

{
    "is_error": 0,
    "version": 3,
    "count": 1,
    "id": 12,
    "values": [
        {
            "entity_id": "465",
            "latest": "Hope",
            "id": "12",
            "1": "Life",
            "2": "Hope"
        }
    ]
}