There's a workaround for this, but it can be laborious if you have a lot of features in your atlas.
For every atlas feature:
- Zoom your map view to the feature and set your scale.
- Run Vector geometry > Create layer from extent, and use the canvas extent. Make the name of the output corresponds to the feature in question.
Once you've created an extent layer for each feature, you'll run them all through Merge vector layers.
By way of example, here are 4 extent layers I created around Wisconsin Congressional Districts:
In your Layout view, choose the newly created merged_vector_layer
as your coverage layer, and be sure to check off "Hidden coverage layer". Sometimes, the "hidden" layer can still show depending on the file format you export to. To be safe, make the layer styling completely transparent.
Allow your map scale to be "controlled by atlas" with a margin of 0%.
Export your atlas:
It is possible, not to mention faster, to simply create polygons in a single layer to begin with, and use those as your coverage layer, but I find that by using the extent-to-polygon feature creates a more consistent, predictable end product.
Also, this creates the problem that your coverage layer no longer holds data relating to the focus of each atlas page, so atlas variables become less useful.
It's a separate issue from your question, but if you cut your extent polygons carefully, you can run a spatial join with the predicate contains to bring your feature attributes into the coverage layer, and you can use the atlas features to make a great end product.