Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add facilities to support story structure analysis and developmental edits #1784

Open
instancezero opened this issue Mar 30, 2024 · 3 comments
Labels
enhancement Request: New feature or improvement project management Component: Project or Project Tree

Comments

@instancezero
Copy link

This idea comes as a result of the discussion at #1769

Add a new "Story" construct of the form %Story[.<term>: <text> to NovelWriter, where auto-complete can suggest any of a set of predefined or user-defined values for <term>, and where <text> is nominally free-form but MAY provide some validation rules.

Collate the story structure metadata in the preview view, giving users the ability to show/hide the data.

Integrate this with existing NovelWriter metadata commands to provide a facility for exporting scene-level summaries of the story structure in formats that are accessible to a wide range of users and applications (CSV for spreadsheets and databases, JSON for general use, and possibly ODS).

@instancezero instancezero added the enhancement Request: New feature or improvement label Mar 30, 2024
@vkbo
Copy link
Owner

vkbo commented Mar 30, 2024

Thanks for writing this up and for the discussion. A few implementation notes for future reference:

  • The term part is free form, and should be collected in the index.
  • Auto-completion can help so the user don't have to memorise or look up all their defined terms.
  • Story and synopsis comments, and other prefixed comments, should be collected in a separate new structure in the index.
  • How these comments show up in the Outline needs to be figured out.
  • They can easily be added to the Outline export feature.
  • Adding JSON should be easy enough.

Also:

  • ODS is maybe a little redundant in addition to CSV. Especially considering how much work it is to write ODF export code. New dependencies will not be pulled in.
  • The prefix.term syntax also works for Mark comments as manuscript notes #1133

Index example:

The "headings" and "references" sections already exist, and currently "synopsis" is a key under each TXXXX section under "headings". T0001 corresponds to the document's first heading, T0002 the second, etc.

"88706ddc78b1b": {
  "headings": {
    "T0001": {"level": "H2", "title": "Where has John Gone?", "line": 1, "tag": "", "cCount": 20, "wCount": 4, "pCount": 0},
    "T0002": {"level": "H3", "title": "Jane Cannot Find John", "line": 8, "tag": "", "cCount": 119, "wCount": 24, "pCount": 1}
  },
  "references": {
    "T0001": {"jane": "@pov", "space": "@location"},
    "T0002": {"jane": "@pov", "john": "@focus", "space": "@location"}
  },
  "comments": {
    "T0001": {
      "synopsis": "text",
      "story.term": "text",
    }
  }
}

@xahodo
Copy link

xahodo commented May 31, 2024

This would be really helpful to me. I'm currently in the process of abusing %Synopsis: for this.

For me it would be helpful to put some data points right in the chapter/scene, which I could later reference in an external program.

Some things I could use this for:

  • Conflict (what makes the scene exciting)
  • Goal (what I want to reach with the scene)
  • Event (significant story event happening in the scene)

Yes, these might be satisfied by the @plot tag reference, but I like to have them right in the scene (for when I'm actually writing).

Writing this down in a format like %Story: <Conflict>John has to choose between his fiancé and his mistress. Why the angled brackets? They are more discernible.

If NW would have an interface to view these nicely organized in one screen it would make this feature even more fantastic. Things would become awesome if you could filter based on which terms to display (in case of there being several).

@vkbo
Copy link
Owner

vkbo commented May 31, 2024

The syntax is already locked down and implemented in the code as it is used for footnotes for the 2.5 release. So it will be:

### Scene

%Story.Conflict: John has to choose between his fiancé and his mistress.

Bla bla bla.

Anyway, I've scheduled this for inclusion in 2.6 as the 2.5 release is already very full and I don't want to add too much new notation in one release. The footnotes were just higher on the list.

Adding this feature will include an update to the Outline View in some form yet to be decided. I think it needs a little trial and error, so I would be happy to have some back and forth with some of the people interested in this feature to sort out the details. @instancezero has made a POC implementation in a branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Request: New feature or improvement project management Component: Project or Project Tree
Projects
None yet
Development

No branches or pull requests

3 participants