This forum is read-only - Please use our new Citavi Forum instead.
Dieses Forum dient nur zur Recherche - Bitte nutzen Sie das neue Citavi Forum für Ihre Fragen.

Interpunktion unterdrücken per \option1 Topic is solved

Tipps zur Bedienung des Zitationsstil-Editors.

Interpunktion unterdrücken per \option1

Postby maier.de » 2017-05-23 13:44

Hallo zusammen,

ich würde gerne einen Stil entwickeln, bei dem die Nachweise in den Fussnoten standardmässig mit einem Punkt enden. Das ist an sich kein Problem. Aber: Gelegentlich werden die Nachweise in einen Satz integriert, etwa so:

"Wie NACHWEIS meisterhaft darstellt, verhält es sich so und nicht anders."

Hier wäre dann natürlich der abschliessende Punkt falsch und ich möchte ihn gerne in einzelnen Fällen deaktivieren.

Mögliche Lösung: Definiere eine neue Vorlage mit der Bedingung "Wenn \option1 gewählt ist, dann ..."
=> Funktioniert. Doch es wird schnell unübersichtlich, da das dann für alle Vorlagen gemacht werden muss.

Eine bessere Lösung wäre wohl, diese Abfrage auf der Ebene einer einzelnen Komponente zu machen. Ich würde gerne eine Textkomponente erstellen, die einfach den abschliessenden Punkt enthält, die aber unterdrückt wird, wenn die \option1 gewählt wird.
Die Frage lautet also: Wie kann ich auf der Ebene einer einzelnen Komponente eine solche Abfrage machen?

Viele Grüsse
Denis
maier.de
Citavi Expert
 

Re: Interpunktion unterdrücken per \option1  Topic is solved

Postby jay-squared » 2017-05-23 14:12

Programmierte Komponenten
Code: Select all
using System.Linq;
using System.Collections.Generic;
using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Metadata;
using SwissAcademic.Collections;
using SwissAcademic.Drawing;

namespace SwissAcademic.Citavi.Citations
{
   public class ComponentPartFilter
      :
      IComponentPartFilter
   {
      public IEnumerable<ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
      {
         handled = false;
         
         PlaceholderCitation thisPlaceholderCitation = citation as PlaceholderCitation;
         if (thisPlaceholderCitation == null) return null;
         
         if (thisPlaceholderCitation.FormatOption1 == true) handled = true;
         
         return null;
      }
   }
}


Aber ich mach das seit Jahr und Tag so, dass ich stattdessen den Punkt per Word-Makro setzen lasse.
jay-squared
Citavi Expert
 

Re: Interpunktion unterdrücken per \option1

Postby maier.de » 2017-05-24 09:40

Besten Dank. Das funktioniert perfekt.

Vielen Dank auch für den Hinweis auf die Word-Makros. Das ist prinzipiell natürlich auch eine mögliche Lösung und hat wohl den Vorteil, dass man dann von einzelnen Stilen unabhängig ist. Allerdings finde ich es schöner, wenn derartige Formatierungen vom Stil gesteuert werden. Scheint mir irgendwie sauberer und weniger anfällig für doppelte Punkte bei "Ebd.", "f." oder "ff." Die kann man ja dann automatisch über die im Stil definierten Ersetzungen abfangen, sodass man am Ende weniger nachbearbeiten muss.

Gerade sehe ich übrigens, dass man bei den Eigenschaften des Zitationsstils Affixe definieren kann. Dort könnte man prinzipiell auch den Punkt als abschliessendes Zeichen definieren, allerdings fehlt die Möglichkeit den Zitattyp "Keine" zu definieren. Das wäre vermutlich die eleganteste Lösung, und käme auch ohne Formatoptionen aus, da man dann selektiv die Affixe im Addin deaktiveren kann.
maier.de
Citavi Expert
 

Re: Interpunktion unterdrücken per \option1

Postby maier.de » 2017-05-24 11:00

Noch eine kurze Nachfrage: Kann man den Code auch so modifizieren, dass der Punkt nur beim letzten Element eines Mehrfachnachweises ausgegeben wird?
maier.de
Citavi Expert
 

Re: Interpunktion unterdrücken per \option1

Postby jay-squared » 2017-05-24 11:16

Geht das hier?

Code: Select all
using System.Linq;
using System.Collections.Generic;
using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Metadata;
using SwissAcademic.Collections;
using SwissAcademic.Drawing;

namespace SwissAcademic.Citavi.Citations
{
   public class ComponentPartFilter
    :
    IComponentPartFilter
   {
    public IEnumerable<ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
    {
      handled = false;
      
      bool HasSuccessorInSamePlaceholder = false;
      
      if (citation == null) return null;
      Reference reference = citation.Reference;
      if (reference == null) return null;
      
      PlaceholderCitation thisPlaceholderCitation = citation as PlaceholderCitation;
      if (thisPlaceholderCitation == null) return null;
      if (thisPlaceholderCitation.Entry == null) return null;
      if (thisPlaceholderCitation.Entry.Placeholder == null) return null;
   
      CitationManager citationManager = thisPlaceholderCitation.CitationManager;
      if (citationManager == null) return null;
   
      FootnoteCitation footnoteCitation = thisPlaceholderCitation as FootnoteCitation;
      if (footnoteCitation == null) return null;
      
      bool HasPredecessorInSameRange = false;
      bool HasPredecessorInSamePlaceholder = false;
      PlaceholderCitation nextPlaceholderCitation = null;
      
      if (footnoteCitation != null)
      {
         nextPlaceholderCitation = footnoteCitation.NextFootnoteCitation as PlaceholderCitation;
         if (nextPlaceholderCitation != null) HasPredecessorInSameRange = true;
      }      
            
      if (HasPredecessorInSameRange)
      {   
         if (nextPlaceholderCitation.Entry == null) return null;
         if (nextPlaceholderCitation.Entry.Placeholder == null) return null;
         if (nextPlaceholderCitation.Entry.Placeholder == thisPlaceholderCitation.Entry.Placeholder) HasSuccessorInSamePlaceholder = true;         
      }      
      
      if (HasSuccessorInSamePlaceholder == true || thisPlaceholderCitation.FormatOption1 == true) handled = true;
      
      return null;
    }
   }
}
jay-squared
Citavi Expert
 

Re: Interpunktion unterdrücken per \option1

Postby jay-squared » 2017-05-24 13:05

Ooops, im Sinne einer sinnvollen Variablenbenennung hätte ich alle "Predecessor" natürlich in "Successor" umbenennnen sollen. Ist aber nur Schall und Rauch. Sollte trotzdem funktionieren, aber ich habe nichts zum ausprobieren.
jay-squared
Citavi Expert
 

Re: Interpunktion unterdrücken per \option1

Postby maier.de » 2017-05-25 09:47

Funktioniert bestens. Vielen Dank.
maier.de
Citavi Expert
 


Return to Den Zitationsstil-Editor verwenden