How do I allow someone using my custom document class to \usepackage some library that I've already \RequirePackage'd with specific options? Optimally, when they call \usepackage, it would operate as if it's importing the package afresh, using only the arguments they supply (potentially none).
For example, I want to provide only \llbracket and \rrbracket from the stmaryrd package by default, but allow the user to import the rest of stmaryrd in their document if they wish.
Here's my class stmaryrdsubset.cls:
\ProvidesClass{stmaryrdsubset}[2017/03/14 minimal with llbracket+rrbracket from stmaryrd]
\LoadClass{minimal}
\RequirePackage[only,llbracket,rrbracket]{stmaryrd}
That works great in providing the bracket commands, but when a document (stmaryrdfull.tex) tries to re-use that package, nothing happens:
\documentclass{stmaryrdsubset}
\usepackage{stmaryrd}
\begin{document}
Yay for $\llbracket\textrm{double brackets}\rrbracket$
This is a cool symbol: $\bindnasrepma$ (it's like an upside-down ampersand!)
\end{document}
Which produces the error:
! Undefined control sequence. \bindnasrepma
And the incomplete result:
(The cool symbol,
, is missing)
I suspect one hack/solution would be to postpone requiring that package until \AtBeginDocument or thereabouts, to give the user a chance to \usepackage{stmaryrd} in their preamble first, and then call my own \RequirePackage[only,...]{stmaryrd} at the last minute. Mayhap there is a cleaner, more straightforward way?

\documentclass[nobrack]{stmaryrdsubset}, which then does not load the package, so people can then load the package. Another option is to adoptmemoir's\EmulatedPackage/DisemulatePackage, which does (IIRC) the opposite of of what you want. But you cannot, as far as I know, load-then-unload a package. – jon Mar 15 '17 at 03:12memoir's 'trick': http://tex.stackexchange.com/q/39415/8528 – jon Mar 15 '17 at 03:17minimal? On no account should you do this. It is not meant for typesetting documents! – cfr Mar 15 '17 at 03:43\RequirePackage[only...to the beginning of the document, you'll just produce a different error. You would need to test to see if the package had been loaded and load it only if not. But this will make it very difficult for people to override anything the package does with, say, a package providing different symbols with the same names. – cfr Mar 15 '17 at 03:52minimal); in practice my document class (https://github.com/semprag/tex/blob/master/sp.cls) is based onarticleand does use the bracket commands internally. – chbrown Mar 15 '17 at 04:03minimalis not suitable for minimal examples. – cfr Mar 15 '17 at 04:05\providecommand, you should have no problems if people then go on to load the package. As for theminimalclass, it's not meant for 'minimal' examples: best to stick witharticle,report, orbookfor most MWEs. – jon Mar 15 '17 at 04:10