W5
W5
这家伙很懒,什么也没写!

注册于 2年前

回答
3
文章
0
关注者
0

你的设置应该没有问题。用texlive时(latexmk.exe -xelatex --shell-escape或者xelatex.exe --shell-escape)没有问题,应该是miktex(xelatex.exe --shell-escape)的实现问题(可能是对xelatex的实现不一样)。

当然也可能是exam-zh没有关注到miktex的xelatex?

这个得大佬们来判断了。

miktex 的 xelatex.exe --shell-escape 最后输出如下:

Run number 1 of rule 'xelatex'
------------
------------
Running 'xelatex -no-pdf -recorder --jobname="A_student_version"  "'\AddToHook{env/document/before}{\ExamPrintAnswer}'\input{A.tex}"'
------------
This is XeTeX, Version 3.141592653-2.6-0.999996 (TeX Live 2024) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
! I can't find file `'"'"'"'.
<to be read again>
                   \xparse function is not expandable
<*> '"'"'\AddToHook
                   {env/document/before}{\ExamPrintAnswer}'\input{A.tex}"'"'
(Press Enter to retry, or Control-Z to exit)
Please type another input file name:

注意:A.tex就是example-single.tex,我测试的时候改了文件名,不用太在意。

你既然用了 revtex4,为什么不直接用它的格式呢?
revtex4应该是APS的格式。里面应该有author,affiliation,email命令的。

    \title{A}
    
    \author{A}
    \affiliation{College ...}
    \email{A@a.com}
    
    \author{B}
    \affiliation{College ...}
    \email{B@a.com}
    
    ...
    
    \maketitle 

\end{document}

或者去arxiv.org上找几篇要投到APS的文章,很多都有tex源档的。根据别人的填自己的内容吧。

试试这个,抛砖引玉。

\documentclass{ctexart}
\usepackage{xparse,enumitem}
\ExplSyntaxOn
\bool_new:N \l_only_show_answer_bool
\bool_set_true:N \l_only_show_answer_bool%想通过这个bool来只显示答案
\seq_new:N \l_answer_seq
\NewDocumentCommand{\answer}{+m}{
    \seq_gput_right:Nn \l_answer_seq{#1}
}
\NewDocumentEnvironment{ceshi}{O{} +b}{%
    \bool_if:NTF \l_only_show_answer_bool
    {   
        \bool_new:N \l_is_answer_bool
        \bool_set_false:N \l_is_answer_bool
        \tl_map_inline:nn {#2}
        {
            \bool_if:NTF \l_is_answer_bool
            {
                \answer{##1}
                \bool_set_false:N \l_is_answer_bool
            }
            {
                \str_compare:nNnT {\tl_to_str:n {##1}} = {\tl_to_str:n {\answer}}
                {
                    \bool_set_true:N \l_is_answer_bool
                }
            }
        }
    }
    {
        \UseHook{env/enumerate/before}%
        \UseHook{env/enumerate/begin}%
        \enumerate[#1]%
              #2
        \endenumerate%
        \UseHook{env/enumerate/end}%
        \UseHook{env/enumerate/after}%
    }
}{}
\AtEndDocument{
    \newpage
    \begin{flushleft}
        这是答案
    \end{flushleft}
    \seq_map_inline:Nn \l_answer_seq{
        \noindent
        #1
        \par
    }
}
\ExplSyntaxOff
\begin{document}
    \begin{ceshi}[resume]
        \item   这是第一个\answer{答案1}
        \item   这是第二个\answer{答案2}
    \end{ceshi}
\end{document}

发布
问题