自定义Translator add-in - 1

本文介绍了如何使用Inventor的API开发Translator Add-in插件,包括创建模板、理解基本结构和实现对特定文件类型的打开和保存功能。通过实例演示了如何针对*.abc文件进行转换器的实现。

Inventor支持打开或保存多种文件格式,例如*.DWG, *.SAT, *.IGS等。其背后是由对应的Translator add-in (格式转换器)所处理。在插件管理器的Translator选项卡下可以看到它们。而普通的插件是在Applications选项卡。


clip_image001[4]

如果你的文件格式Inventor还不支持,可以自己做转换器。API提供了这种能力。其实,我们经常做的插件是常规插件(放在Applications下的那些),Translator也是一种插件。其实这种插件的基本结构和普通插件是类似的:

1.都是一个dll
2. *.X.Manifest与*.dll编译
3. 由 *.addin文件规定其行为 

但有些细节是不同的:

1. Translator 插件需要从TranslatorAddInServer继承
2. 必须重载几个方法,例如 Open和SaveCopyAs方法等
3. *.addin文件里的标签内容用来规定是Translator,用于打开保存什么后缀名的文件,是否支持打开的转换,是否支持保存转换等。具体请见我写的英文博客:

http://adndevblog.typepad.com/manufacturing/2014/02/custom-translator-addin-of-inventor-1.html

大家知道,对于常规插件,Inventor 向导是可以帮你创建一个工程。C++的向导,还有选项创建Translator插件。但.NET的还没有提供。既然它和普通插件类似,我就把普通插件的模板拿出来,修改修改,做了个Translator插件模板。我暂时做的是C#的,过几天做VB.NET的。

Download VCSInventorTranslatorAddInTemplate2014

把这个压缩包放到

<Documents>\ Visual Studio ***\Templates\ProjectTemplates\ 

当打开VS,选择这个模板创建工程

clip_image002

工程建立后是这个样子。它帮助你新建了一个类,把TranslatorAddInServer的必要方法都重载了。

clip_image003

也准备好了一个*.addin文件。默认是处理*.abc文件。你可以根据需要修改成自己的后缀。还有其它行为参数也可修改。

<AddinType="Translator">
  <!--Created for Autodesk Inventor Version 18.0-->
  <ClassId>{f4c4d6ac-3354-457b-ad49-626583d640d9}</ClassId>
  <ClientId>{f4c4d6ac-3354-457b-ad49-626583d640d9}</ClientId>
  <DisplayName>MyTranslator</DisplayName>
  <Description>MyTranslator</Description>
  <Assembly>MyTranslator.dll</Assembly>
  <SupportsOpenInto>.ipt;.iam</SupportsOpenInto>
  <SupportsImportInto>.ipt</SupportsImportInto>
  <SupportsSaveCopyAsFrom>.ipt;.iam</SupportsSaveCopyAsFrom>
  <FileExtensions>.abc</FileExtensions>
  <FilterTextLanguage="1033">ABC Files (*.abc)</FilterText>
  <SupportsOpen>1</SupportsOpen>
  <SupportsImport>1</SupportsImport>
  <SupportsSaveCopyAs>1</SupportsSaveCopyAs>
  <LoadOnStartUp>0</LoadOnStartUp>
  <UserUnloadable>1</UserUnloadable>
  <Hidden>0</Hidden>
  <ExtraInfo>1</ExtraInfo>
</Addin>

下一篇博客我将根据这个工程做一个具体的例子,实现对*.abc的打开和保存。

<think>好的,用户现在想了解如何在LaTeX中自定义引用文献格式。首先,我需要确定用户的需求是什么。可能用户在使用LaTeX撰写论文或报告时,遇到了参考文献格式不符合要求的情况,比如需要遵循特定的期刊格式或学校的要求。用户可能已经知道基本的引用方法,比如使用BibTeX,但现在需要更定制化的解决方案。 接下来,我需要回忆LaTeX中处理参考文献的常用工具。BibTeX是传统的方法,但功能有限,而biblatex则更为灵活,适合深度定制。用户提到“自定义引用文献格式”,这可能包括引用样式(如数字、作者-年份)、文献列表的格式(如排序方式、字段显示)、以及特定字段的修改等。因此,应该重点介绍biblatex包的使用,因为它提供了更多的自定义选项。 然后,我需要组织回答的结构。首先介绍两种主要方式:修改现有样式和使用biblatex自定义。对于修改现有样式,可以举例说明如何复制现有样式文件并修改,比如将plain改为自定义名称,并调整输出格式。然后,详细说明使用biblatex的步骤,包括加载包、选择样式、自定义输出模板等。这里需要给出具体的代码示例,比如如何将作者名改为粗体,如何修改标题的格式等。 同时,用户可能需要了解如何编译文档以确保自定义样式生效,特别是使用biblatex时可能需要使用Biber而不是BibTeX。需要提醒用户注意编译顺序:LaTeX -> Biber -> LaTeX x2,以确保参考文献正确生成。 此外,常见问题也是需要考虑的。例如,用户可能遇到样式文件路径问题,需要将自定义的.bbx和.cbx文件放在正确的位置,或者直接在文档中定义样式。另外,用户可能需要处理特定的引用需求,比如在引用中显示URL或DOI,这时可以指导他们使用biblatex的字段重写功能。 最后,提供一些实用建议,比如参考biblatex的官方文档,或者使用在线工具生成自定义格式。还要注意区分不同的引用样式,如numeric、authoryear等,以满足不同场景的需求。确保回答清晰、分步骤,并包含实际例子,这样用户能够逐步操作并验证结果。</think>在LaTeX中自定义文献引用格式主要通过修改`.bst`文件(BibTeX)或使用`biblatex`宏包(推荐)实现。以下是详细操作指南: --- ### 一、基础方法:修改现有样式(BibTeX) 1. **查找原始样式文件** - 在TeX发行版的`bibtex/bst`目录找到基础样式(如`plain.bst`) - 复制并重命名为`mycustom.bst` 2. **关键字段修改示例** ```latex % 修改作者显示格式 FUNCTION {format.authors} { author empty$ { "" } { author #1 "{vv~}{ll}{, jj}{, f.}" format.name$ % 姓在前,名缩写 author num.names$ #1 > % 判断作者数量 { " et~al." * } % 多于1位作者时添加"et al" 'skip$ if$ } if$ } % 修改标题格式 FUNCTION {format.title} { title empty$ { "" } { "``" title * "''" * } % 添加双引号 if$ } ``` --- ### 二、高级定制:使用biblatex(推荐) #### 步骤1:基础配置 ```latex \usepackage[backend=biber, % 必须使用Biber引擎 style=numeric, % 基础样式:numeric/authoryear等 citestyle=numeric-comp, % 引用样式 sorting=nyt, % 姓名-年份-标题排序 maxbibnames=5, % 文献列表显示最多作者数 maxcitenames=2, % 引用时显示最多作者数 giveninits=true % 缩写名字 ]{biblatex} \addbibresource{ref.bib} % 引用文献数据库 ``` #### 步骤2:自定义输出模板 ```latex % 修改作者显示为粗体(在导言区添加) \DeclareNameFormat{author}{% \ifgiveninits {\usebibmacro{name:family-given}{\textbf{\namepartfamily}}{\textbf{\namepartgiveni}}{}{\namepartsuffix}} {\usebibmacro{name:family-given}{\textbf{\namepartfamily}}{\textbf{\namepartgiven}}{}{\namepartsuffix}}% } % 修改标题格式(会议论文添加斜体) \DeclareFieldFormat[inproceedings]{title}{% \mkbibemph{#1}% % 斜体显示 \iffieldupper{subtitle} % 检测副标题 {\setunit{\subtitlepunct}% \printfield{subtitle}} {}% } ``` #### 步骤3:编译流程 ```shell pdflatex main.tex # 首次编译 biber main # 生成参考文献数据 pdflatex main.tex # 二次编译 pdflatex main.tex # 最终编译 ``` --- ### 三、典型需求解决方案 1. **中文文献特殊处理** ```latex % 识别中英文作者混排 \DeclareSourcemap{ \maps[datatype=bibtex]{ \map{ \step[fieldsource=langid, match=chinese, final] \step[fieldset=userb, fieldvalue={cn}] } } } % 单独设置中文文献格式 \DeclareBibliographyDriver{article}{% \ifentrytype{article} {\ifboolexpr{ test {\iffieldequalstr{userb}{cn}} } {\printfield{title}\newunit\newblock \printnames{author}\addcomma\space \printfield{journal}\addcomma\space \printfield{year}} {\usebibmacro{begentry}% \usebibmacro{author/translator+others}% \usebibmacro{title}% \usebibmacro{journal+issuetitle}% \usebibmacro{date}}} {}% \finentry} ``` 2. **专利文献格式定制** ```latex \DeclareFieldFormat[patent]{title}{\mkbibquote{#1}} \DeclareFieldFormat[patent]{number}{专利号:\texttt{#1}} ``` --- ### 四、调试技巧 1. 使用`\listfiles`命令检查加载的样式文件路径 2. 通过`biber --debug`模式查看文献解析过程 3. 使用`\usepackage{biblatex-true-citepages-omit}`处理特定页码引用 --- **重要参考**: - 官方手册:`texdoc biblatex`(英文) - 快速样式生成工具:[biblatex-custom-dbx](https://ctan.org/pkg/biblatex-custom-dbx) - 中文适配方案:[gb7714-2015](https://ctan.org/pkg/gb7714-2015)宏包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值