My approach is the inline widget. There is a link button web part as you said, but you can create a customize widget based on the link/button web part. No programming involved. For customization I want editors to select links from a specific subset and I want the to use predefined styles etc. I've changed the default control to drop down which I populated with a query:
If a form control for a field in your document is Rich Text Editor(CK Editor), i.e. you can edit text as HTML in the form tab and you have ability to insert inline widgets:
I use this feature to let editors to insert buttons (Call to Action) they can pick and customize them based on predefined values, i.e. links, CSS etc.