有时,作者必须将原本按照一家出版商的格式(例如 IEEE)准备的稿件转为按照另一家出版商的格式(例如 ACM)提交。这可能是由于:
- 一篇论文被一家期刊拒绝,需要提交给另一家期刊
- 稿件完成后,作者发现其页数已超出一家出版商的限制(例如,某期刊为 14 页),需要提交给另一家出版商(例如,另一家期刊为 25 页)。
- 另一本期刊的范围比最初想象的更符合
- 以及许多其他可能的原因...
但是,由于它们使用不同的格式,因此必须对文本进行大量更改,这可能会导致语法/格式错误。如果只需更改标题 .tex 文件中的宏即可实现此目的,而无需更改 .cls 或 .bst/.bib 文件或任何包含的 .tex 文件,那就太好了。
有些出版商只在接受后才接受源文件,因此这种方法对他们来说最有用,因为接受后,作者有保证,并且有比提交时(截止日期)更多的时间来删除其宏。如果出版商在接受前就接受源文件,编辑们不会喜欢宏,正如 cfr 正确指出的那样,所以这种方法不是很有用。
在这里我重点关注 ACM(期刊模板,而非会议模板)和 IEEE 之间的表格和引用格式差异。
引用:IEEE 使用编号引用,ACM 使用作者年份。我想在 .tex 文件中使用以下内容:
\citeN{Lastname2010title} present a technique
生成
ACM PDF: Lastname et al. [2010] present a technique
IEEE PDF: Lastname et al. [3] present a technique
表格:目前,我必须分别使用以下内容来表示 ACM 和 IEEE 表格(使用 MWE)。如果能将表格部分放入宏中,并在 IEEE 或 ACM 论文的头文件中以不同的方式定义该宏,那就太好了。
\documentclass{acmsmall}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Lastname2010title,
author = "Firstname Lastname and next author and more authors",
title = "Title of paper",
year = "2010",
journal = "Some Journal",
}
\end{filecontents}
\begin{document}
\begin{table}[htbp]
\centering
\tbl{ My Table Title \label{tab:label1}}{
\begin{tabular}{|l|l|} \hline
Key & Value \cite{Lastname2010title} \\\hline
\end{tabular}
}
\end{table}
\citeN{Lastname2010title} present a technique.
\bibliographystyle{ACM-Reference-Format-Journals}
\bibliography{\jobname}
\end{document}
这是针对 IEEE 的。
\documentclass{IEEEtran}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Lastname2010title,
author = "Firstname Lastname and next author and more authors",
title = "Title of paper",
year = "2010",
journal = "Some Journal",}
\end{filecontents}
\begin{document}
\begin{table}[htbp]
\centering
\caption{My Table Title}\label{tab:label1}
\begin{tabular}{|l|l|}\hline
Key & Value \cite{Lastname2010title} \\\hline
\end{tabular}
\end{table}
% Currently I have to use this
Lastname et al. \cite{Lastname2010title} present a technique.
\bibliographystyle{IEEEtran}
\bibliography{\jobname}
\end{document}
答案1
您可以将其移至\bibliographystyle
序言或任何其他内容,这样更容易切换。
这点无可非议。然而,以下建议均需遵守一项重大警告:
如果你提交来源- 与 PDF 相反 - 你应该 不是这样做只会惹恼别人。尤其是,这会让文字编辑们非常恼火。他们不是想要一个高度定制的序言和使用一堆用户定义的宏的正文。
买者自负
您可以通过这种方式处理表格,提供一个不会覆盖现有定义的命令,但如果未定义则仅提供默认值。
\documentclass{IEEEtran}
\providecommand\tbl[2]{%
\caption{#1}%
#2}
\bibliographystyle{IEEEtran}
\begin{document}
\begin{table}[htbp]
\centering
\tbl{My Table Title \label{tab:label1}}{
\begin{tabular}{|l|l|}\hline
Key & Value \cite{Lastname2010title} \\\hline
\end{tabular}
}
\end{table}
% Currently I have to use this
Lastname et al. \cite{Lastname2010title} present a technique.
\bibliography{\jobname}
\end{document}
生产
切换类别意味着我们需要修改序言以使用相关的参考书目样式,但可以\providecommand
保留。我们不需要它,但它没有坏处。(这会导致编译时间无限增加,因为 TeX 将读取代码,但不会对编译结果产生任何影响。)
我们还需要根据情况将其更改\cite
为等等。\citeN
\documentclass{acmsmall}
\providecommand\tbl[2]{%
\caption{#1}%
#2}
\bibliographystyle{ACM-Reference-Format-Journals}
\begin{document}
\begin{table}[htbp]
\centering
\tbl{My Table Title \label{tab:label1}}{
\begin{tabular}{|l|l|}\hline
Key & Value \cite{Lastname2010title} \\\hline
\end{tabular}
}
\end{table}
\citeN{Lastname2010title} present a technique.
\bibliography{\jobname}
\end{document}
生产
请注意,您显然也可以\providecommand
这样做\citeN
。但在这种情况下,您仍然需要更改文本的结构。
你可以通过定义自定义引用命令来解决这个问题,\myciteN{}{}
该命令根据加载的类执行不同的操作。例如,使用etoolbox
for 测试是否\citeN
已定义,
\documentclass{acmsmall}
\usepackage{etoolbox}
\providecommand\tbl[2]{%
\caption{#1}%
#2}
\providecommand\myciteN[2]{%
\ifundef\citeN{%
#1 \cite{#2}%
}{%
\citeN{#2}%
}%
}
\bibliographystyle{ACM-Reference-Format-Journals}
\begin{document}
\begin{table}[htbp]
\centering
\tbl{My Table Title \label{tab:label1}}{
\begin{tabular}{|l|l|}\hline
Key & Value \cite{Lastname2010title} \\\hline
\end{tabular}
}
\end{table}
\myciteN{Lastname et al.}{Lastname2010title} present a technique.
\bibliography{\jobname}
\end{document}
生产
而只是改变了序言中的类别和参考书目样式,如下所示
\documentclass{IEEEtran}
\usepackage{etoolbox}
\providecommand\tbl[2]{%
\caption{#1}%
#2}
\providecommand\myciteN[2]{%
\ifundef\citeN{%
#1 \cite{#2}%
}{%
\citeN{#2}%
}%
}
\bibliographystyle{IEEEtran}
\begin{document}
\begin{table}[htbp]
\centering
\tbl{My Table Title \label{tab:label1}}{
\begin{tabular}{|l|l|}\hline
Key & Value \cite{Lastname2010title} \\\hline
\end{tabular}
}
\end{table}
\myciteN{Lastname et al.}{Lastname2010title} present a technique.
\bibliography{\jobname}
\end{document}
现在生产
这意味着你可以这样写,例如,
\documentclass{IEEEtran}
% \documentclass{acmsmall}
\usepackage{etoolbox}
\providecommand\tbl[2]{%
\caption{#1}%
#2}
\providecommand\myciteN[2]{%
\ifundef\citeN{%
#1 \cite{#2}%
}{%
\citeN{#2}%
}%
}
\bibliographystyle{IEEEtran}
% \bibliographystyle{ACM-Reference-Format-Journals}
\begin{document}
\begin{table}[htbp]
\centering
\tbl{My Table Title \label{tab:label1}}{
\begin{tabular}{|l|l|}\hline
Key & Value \cite{Lastname2010title} \\\hline
\end{tabular}
}
\end{table}
\myciteN{Lastname et al.}{Lastname2010title} present a technique.
\bibliography{\jobname}
\end{document}
并且仅注释/取消注释类行和一个前导行即可在格式之间切换。