In Zotero on a Mac, give edited multivolume books distinct formatting by adding a conditional branch to a CSL style. This walkthrough targets individual volumes with editors and no author, using synthetic metadata and a complete demonstration style.

Define which books should receive the special formatting

CSL uses book for authored books, edited collections, complete multivolume works, and individual volumes. Its documented type list has no separate edited-multivolume-book type. The supported approach is to test the book’s metadata inside a style. CSL 1.0.2 Specification

For this walkthrough, the rendering contract is deliberately specific: a book with an editor, a volume, and no author receives a title-first bibliography entry. All other records receive the demonstration’s ordinary creator-first entry. This is an illustrative formatting choice, not a prescribed citation standard.

The special entry will follow this order: italicized title, editor names and role label, volume number, then publication place, publisher, and year. For example, the intended output for the synthetic record below is:

Collected Shape Exercises. Nora Vale, ed. vol. 2. Sampletown: Example Workshop Press, 2024.

The distinction between a volume and a set matters. CSL’s volume identifies the particular volume; number-of-volumes records the total count. Neither the number of editors nor a number embedded in the title establishes that distinction. CSL variable definitions

Enter a test record with unambiguous metadata

Create a Zotero Book record with the following synthetic values. Store Nora Vale as a creator whose role is Editor, and leave the author absent. Zotero documents separate creator roles and distinguishes Volume from # of Volumes. Zotero Item Types and Fields

Zotero field Synthetic value
Item Type Book
Title Collected Shape Exercises
Creator role Editor
Creator first name Nora
Creator last name Vale
Volume 2
# of Volumes 3
Place Sampletown
Publisher Example Workshop Press
Date 2024

Enter 2 in Volume, without adding vol.. The style supplies the label. Here, 2 identifies the volume being cited and 3 describes the complete set. Zotero recommends entering numeric volume values as numbers. Zotero’s book and periodical fields

For a separate record representing the entire three-volume set, leave Volume empty and retain # of Volumes as 3. Under this article’s contract, that record follows the ordinary path. This prevents the bibliography from treating the set as though it were a particular numbered volume.

Create a complete demonstration style on your Mac

Open TextEdit and choose Format → Make Plain Text before pasting the code. Save it as edited-multivolume-demo.csl, checking that the filename ends in .csl. Zotero’s editing guide specifically documents plain-text editing with TextEdit on a Mac. Editing CSL Styles — Step-by-Step Guide

The following is a complete demonstration style. Its bibliography implements the contract above; its in-text citations show only the title. The ordinary entry is intentionally brief, so use this file to understand and test the rule before adapting an established style for a mixed library.

<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0"
       class="in-text" default-locale="en-US">
  <info>
    <title>Edited Multivolume Books Demo</title>
    <id>urn:uuid:6b4f5d8c-7b20-4fea-92eb-6207d10d94e3</id>
    <updated>2026-10-29T12:13:38+00:00</updated>
  </info>
  <macro name="editors">
    <names variable="editor">
      <name and="text" delimiter=", "/>
      <label form="short" prefix=", "/>
    </names>
  </macro>
  <macro name="creators">
    <choose>
      <if variable="author">
        <names variable="author">
          <name and="text" delimiter=", "/>
        </names>
      </if>
      <else>
        <text macro="editors"/>
      </else>
    </choose>
  </macro>
  <macro name="extent">
    <choose>
      <if variable="volume">
        <group delimiter=" ">
          <label variable="volume" form="short"/>
          <text variable="volume"/>
        </group>
      </if>
      <else-if variable="number-of-volumes">
        <group delimiter=" ">
          <text variable="number-of-volumes"/>
          <label variable="number-of-volumes" form="short"/>
        </group>
      </else-if>
    </choose>
  </macro>
  <macro name="imprint">
    <group delimiter=", ">
      <group delimiter=": ">
        <text variable="publisher-place"/>
        <text variable="publisher"/>
      </group>
      <date variable="issued">
        <date-part name="year"/>
      </date>
    </group>
  </macro>
  <macro name="ordinary-entry">
    <group delimiter=". ">
      <text macro="creators"/>
      <text variable="title" font-style="italic"/>
      <text macro="extent"/>
      <text macro="imprint"/>
    </group>
  </macro>
  <macro name="entry">
    <choose>
      <if type="book" variable="editor volume" match="all">
        <choose>
          <if variable="author" match="none">
            <group delimiter=". ">
              <text variable="title" font-style="italic"/>
              <text macro="editors"/>
              <text macro="extent"/>
              <text macro="imprint"/>
            </group>
          </if>
          <else>
            <text macro="ordinary-entry"/>
          </else>
        </choose>
      </if>
      <else>
        <text macro="ordinary-entry"/>
      </else>
    </choose>
  </macro>
  <citation>
    <layout prefix="(" suffix=")" delimiter="; ">
      <text variable="title" font-style="italic"/>
    </layout>
  </citation>
  <bibliography>
    <layout suffix=".">
      <text macro="entry"/>
    </layout>
  </bibliography>
</style>

The updated element is required style-file metadata. Here it records this demonstration’s creation time; it is not an article publication or review timestamp. The root uses version="1.0", as specified for CSL 1.0-compatible styles. CSL style structure

Understand the condition before changing it

The outer condition requires a book and both populated variables because it uses match="all". The inner condition requires the author to be absent through match="none". Nesting expresses the combination without making the absence test apply to the other conditions. CSL conditional rendering

The resulting decision table is the practical check for this particular implementation:

Record Special title-first entry? Reason
Book, editor, volume 2, no author Yes Meets every requirement
Book, editor, volume 1, no author Yes A first volume still meets the contract
Book, editor, no volume, three-volume count No Represents the set under this convention
Book, author, editor, volume 2 No Author is present
Book, volume 2, no editor No Editor is absent
Book section with editor and volume No Item type is not book

This condition tests metadata presence. It cannot establish whether an imported record describes the intended object correctly. Review the title and volume fields before expanding the rule across many records.

CSL 1.0.2 also provides no general numeric greater-than condition. Testing number-of-volumes for presence would match a populated value of 1 as well as 3; is-numeric does not solve that comparison. If you extend the rule to whole sets, first establish a consistent metadata convention rather than treating presence as proof of multiple volumes. CSL condition definitions

The demonstration’s extent macro gives the particular volume priority when both fields exist. Thus the sample prints vol. 2, rather than also printing the set’s total. Its ordinary creator macro likewise prefers an author over editors. These are explicit simplifications of this example; preserve any additional creator or extent requirements when adapting your own style.

Preview the result and test the boundary cases

Select the synthetic record in Zotero. In Zotero’s settings, open Cite, then Style Editor. Paste the complete style into the editor and click Refresh to use the selected library item. The editor displays citations and bibliography entries separately and updates the preview as you edit. Zotero Style Editor

Inspect the bibliography entry for the intended title-first order. The in-text citation should remain a parenthesized italicized title because this demonstration places the special rule only in the bibliography’s entry macro.

Next, create synthetic variations matching the decision table. Add an author to one record, remove the volume from another, and make a whole-set record. Give each a distinct neutral title so you can identify it in the preview. Check that only the qualifying records move their titles before their editors.

The example’s XML was parsed and its macro references checked during preparation. It has not been rendered inside the Mac Zotero application. Before installing or adapting it, validate the complete file against the CSL schema using the validator linked from the project’s development guide. An XML syntax check alone does not establish CSL validity. CSL Style Development — Validation

Save your code before closing the editor or choosing another installed style: Zotero documents that those actions discard unsaved edits. Zotero Style Editor

Install the style or adapt an existing one

To install the saved file, open Zotero’s Cite settings and use the + button in the style manager to select edited-multivolume-demo.csl. The same settings provide Style Preview for checking selected records with installed styles. Zotero Cite settings

For an existing citation format, begin with its current independent style. A dependent style only points to a parent and does not contain its own formatting instructions. Primer — An Introduction to CSL

Keep the established style’s ordinary rendering as the fallback, then insert the special condition before its broader book rule. Adapt the special output to its existing name, title, and publication macros. Retain its sorting, other item types, and citation behavior unless those also need changes. This lets the new branch solve one task without replacing the rest of the format.

Give the adapted style a distinct title and ID before installation; Zotero warns that retaining the original identity can allow an update to overwrite the modified version. Zotero’s style editing guide

If the special entry does not appear, inspect the record against the decision table before changing punctuation or macros. Confirm the creator role, volume value, author absence, and item type. Once the matching and fallback records behave as intended, you have a reusable rendering rule whose scope is clear: individual edited volumes receive their own bibliography format, while other records continue through the chosen ordinary path.

Sources