我知道这个问题经常被问到,但由于我没有电脑的管理员权限(即无法安装 Pearl),并且觉得将文本复制粘贴到 Word 或其他地方很烦人,所以我希望在这里能找到帮助。基本上,我希望在给定段落的旁边显示字数,这有助于我写作。
从我找到的解决方案来看,https://tex.stackexchange.com/a/10034/182896似乎对段落很有效,并且能满足我的需要。以下是序言的摘录:
\documentclass{article}
\begingroup
\lccode`\~=`\ %
\lowercase{%
\gdef\assignment{\setcounter{word}{0}%
\catcode`~=\active
\def~{\space\stepcounter{word}}}}%
\endgroup
\newcounter{word}
\def\endassignment{\stepcounter{word}%
\marginpar{\arabic{word} words}}
\usepackage[authordate,backend=biber, hyperref=true]{biblatex-chicago}
我花了很长时间才弄清楚问题出在哪里,但如果在正文中我这样做:
\begin{document}
\begin{assignment}
Some text here~\autocites[see for instance][]{Gallarotti2011}{Lai2013b}{Hayden2012}.\par
\end{assignment}
\end{document}
一切都很好,但如果我执行以下操作:
\begin{document}
\begin{assignment}
Some text here~\autocites[see for instance][]{Gallarotti2011, Hayden2012, Lai2013b}.
\end{assignment}
\end{document}
该文档无法编译,而是返回此错误:
Missing \endcsname inserted.
<to be read again>
\csname\endcsname
l.22 ...e][]{Gallarotti2011, Hayden2012, Lai2013b}
.
因此,我不明白除了以下原因之外,这里的问题是什么它以某种方式发生在花括号中。当然我可以重写我的引文,但那会花费很多时间。所以也许有人可以帮忙?
谢谢!
答案1
像这样使空间处于活动状态会破坏大多数乳胶文档,出现错误的情况是幸运的情况,您会收到警告,更令人担忧的是它对排版产生不利影响的情况(此处的第三个示例)或只是给出错误的数字(第二和第三个示例)。
\documentclass{article}
\begingroup
\lccode`\~=`\ %
\lowercase{%
\gdef\assignment{\setcounter{word}{0}%
\catcode`~=\active
\def~{\space\stepcounter{word}}}}%
\endgroup
\newcounter{word}
\def\endassignment{\stepcounter{word}%
\marginpar{\arabic{word} words}}
\usepackage[authordate,backend=biber, hyperref=true]{biblatex-chicago}
\begin{document}
\begin{assignment}
Some text here
\end{assignment}
\begin{assignment}
Some
text
here
\end{assignment}
\begin{assignment}
Some text here
\end{assignment}
\end{document}
当然,理论上可以使代码更复杂并使这些示例给出正确的输出,但更复杂的代码更有可能与其他包发生冲突并出现错误。