Typically you would handle this with build or cascade options. Was there a reason that wouldn’t work in this case?
For example, this…
[taxonomies]
author = 'authors'
category = 'categories'
tag = 'tags'
[outputs]
taxonomy = ['html']
term = ['html']
[[cascade]]
outputs = ['html','calendar']
[cascade._target]
path = '{/authors,/authors/**}'
…produces this:
public/
├── authors/
│ ├── author-a/
│ │ ├── index.html
│ │ └── index.ics
│ ├── author-b/
│ │ ├── index.html
│ │ └── index.ics
│ ├── index.html
│ └── index.ics
├── categories/
│ ├── category-a/
│ │ └── index.html
│ ├── category-b/
│ │ └── index.html
│ └── index.html
├── tags/
│ ├── tag-a/
│ │ └── index.html
│ ├── tag-b/
│ │ └── index.html
│ └── index.html
├── favicon.ico
├── index.html
├── index.xml
└── sitemap.xml
In the above notice that only the authors taxonomy/term pages have the calendar output format.