改变 journal-specific 样式的条件语句
Conditional statement for varying journal-specific style
我正在为特定的年度会议期刊定制引文样式 (CSL)。 existing citation style 大体上是正确的,但与所有其他期刊相比,会议要求他们的期刊具有特定且不同的风格。例如,现有的日记帐样式为所有日记帐提供以下内容:
Author, F., S. Author, and T. Author. Journal Article Title.
Transportation Research Record: Journal of the Transportation Research
Board, No. 9999, 2013, pp. 107–117.
而会议仅要求其期刊采用以下样式:
Author, F., S. Author, and T. Author. Journal Article Title. In
Transportation Research Record: Journal of the Transportation Research
Board, No. 9999, Transportation Research Board of the National
Academies, Washington, D.C., 2013, pp. 107–117.
我的主要问题是:如何更改期刊的引文样式,但前提是标题与特定期刊标题匹配?
期刊的一般引用格式如下所示:
<else-if type="article-journal article-newspaper" match="any">
<group delimiter=". ">
<text macro="title"/>
<group delimiter=", ">
<text variable="container-title" font-style="italic" form="long"/>
<text variable="volume" prefix="Vol. "/>
<text variable="issue" prefix="No. "/>
<text macro="issued"/>
<text macro="page"/>
</group>
</group>
</else-if>
我目前正在努力添加一个 else-if 语句来选择 type="article-journal"
,但也可以识别变量 title="specific journal title"
何时包含会议要求的样式变化。见下文:
<else-if type="article-journal article-newspaper" match="any">
<choose>
<if match=".[title='specific journal title']">
<!-- SPECIFIC JOURNAL CITATION -->
</if>
<else>
<!-- GENERAL JOURNAL CITATION -->
</else>
</choose>
</else-if>
我认为这个新代码不起作用,因为使用的匹配未在 csl 中指定,但我在 xml 中看到了使用 <when>
和 <otherwise>
的示例(这似乎不被 csl 接受。当给定的引用在同一 'type' 中需要不同的格式时,如何创建 journal-specific 格式?
不幸的是,这是不可能的。在 match
(.[title='specific journal title']
) 上设置的值在 CSL 1.0.1 schema 下无效。该架构不提供测试变量内容的方法,这是设计使然,特别是通过防止样式代码中的这种特殊情况来防止复杂性。
感谢您添加一些示例。根据您的运输研究记录论文示例,它看起来根本不像期刊文章,而更像是章节、报告或会议论文。期刊文章的参考文献很少打印出版商 ("Transportation Research Board of the National Academies, Washington, D.C.") 或在出版物标题前使用 "In"。
我会尝试更改您的 TRR 论文的项目类型(例如 CSL 的 "chapter"、"report" 或 "paper-conference",看看其中一个是否能让您更接近你需要什么。CSL 存储库中的当前样式已经定义了这三种项目类型的格式,顺便说一下。如果您使用的是 Zotero,请参阅 https://aurimasv.github.io/z2csl/typeMap.xml 以了解 Zotero 和 CSL 项目类型和字段之间的映射。
我正在为特定的年度会议期刊定制引文样式 (CSL)。 existing citation style 大体上是正确的,但与所有其他期刊相比,会议要求他们的期刊具有特定且不同的风格。例如,现有的日记帐样式为所有日记帐提供以下内容:
Author, F., S. Author, and T. Author. Journal Article Title. Transportation Research Record: Journal of the Transportation Research Board, No. 9999, 2013, pp. 107–117.
而会议仅要求其期刊采用以下样式:
Author, F., S. Author, and T. Author. Journal Article Title. In Transportation Research Record: Journal of the Transportation Research Board, No. 9999, Transportation Research Board of the National Academies, Washington, D.C., 2013, pp. 107–117.
我的主要问题是:如何更改期刊的引文样式,但前提是标题与特定期刊标题匹配?
期刊的一般引用格式如下所示:
<else-if type="article-journal article-newspaper" match="any">
<group delimiter=". ">
<text macro="title"/>
<group delimiter=", ">
<text variable="container-title" font-style="italic" form="long"/>
<text variable="volume" prefix="Vol. "/>
<text variable="issue" prefix="No. "/>
<text macro="issued"/>
<text macro="page"/>
</group>
</group>
</else-if>
我目前正在努力添加一个 else-if 语句来选择 type="article-journal"
,但也可以识别变量 title="specific journal title"
何时包含会议要求的样式变化。见下文:
<else-if type="article-journal article-newspaper" match="any">
<choose>
<if match=".[title='specific journal title']">
<!-- SPECIFIC JOURNAL CITATION -->
</if>
<else>
<!-- GENERAL JOURNAL CITATION -->
</else>
</choose>
</else-if>
我认为这个新代码不起作用,因为使用的匹配未在 csl 中指定,但我在 xml 中看到了使用 <when>
和 <otherwise>
的示例(这似乎不被 csl 接受。当给定的引用在同一 'type' 中需要不同的格式时,如何创建 journal-specific 格式?
不幸的是,这是不可能的。在 match
(.[title='specific journal title']
) 上设置的值在 CSL 1.0.1 schema 下无效。该架构不提供测试变量内容的方法,这是设计使然,特别是通过防止样式代码中的这种特殊情况来防止复杂性。
感谢您添加一些示例。根据您的运输研究记录论文示例,它看起来根本不像期刊文章,而更像是章节、报告或会议论文。期刊文章的参考文献很少打印出版商 ("Transportation Research Board of the National Academies, Washington, D.C.") 或在出版物标题前使用 "In"。
我会尝试更改您的 TRR 论文的项目类型(例如 CSL 的 "chapter"、"report" 或 "paper-conference",看看其中一个是否能让您更接近你需要什么。CSL 存储库中的当前样式已经定义了这三种项目类型的格式,顺便说一下。如果您使用的是 Zotero,请参阅 https://aurimasv.github.io/z2csl/typeMap.xml 以了解 Zotero 和 CSL 项目类型和字段之间的映射。