0

user1 (パッケージによって提供されるキーが定義/設定されているかどうかに応じて出力を作成するように、glossaryentryfield を変更したいと思います。次のことを試しました。

\renewcommand*{\glossaryentryfield}[5]{\bfseries{\glstarget{##1}{##2}} & ##3 \\
\ifempty{\glsentryuseri{##1}}
    it & is very empty \\
\else
    & \glsentryuseri{##1} \\%
\fi}

ただし、次のようないくつかのエラーメッセージが表示されます。

! 未定義の制御シーケンス。\ifempty l.49 \setentrycounter{page}\glsnumberformat{a}}} % エラー メッセージの先頭行の末尾にある制御シーケンスが \def されていません。スペルが間違っている場合 (例: \hobx'), typeI' と正しいスペル (例: `I\hbox'))。それ以外の場合はそのまま続行してください。

(用語集のエントリごとに 1 つ) 明らかに、一致しない \else と一致しない \fi が続きます。

私が見る限り、私は拡張順序で何かをしなければなりませんが、私はラテックスの完全な初心者です。user1 が定義されている場合にのみ余分な行を表示したいので、すべての user1-keys を単純に設定することはできません。他の行はデバッグ目的のためだけです。

また、 \if ( \expandafter\ifempty{\glsentryuseri{##1}} ) の直前に \expandafter を追加しようとしました (次の出力が得られます:)

user1value & は非常に空です \\ & user1value

誰もこれを確認できなかったので、ラテックスコミュニティにクロスポストし、そこに最小限の例を追加しました。あるサイトでそれが公開されるとすぐに、ソリューションをクロスポストします

4

1 に答える 1

0

Nicola Talbot は、ラテックス コミュニティに関する私の質問に答えて、次のように書いています。

\ifempty は標準の LaTeX では定義されていないため、エラー メッセージが表示されます。内部コマンド \@ifmtarg を提供する ifmtarg パッケージを使用できます。例えば:

\documentclass{article}

\usepackage{ifmtarg}
\usepackage[style=long]{glossaries}

\makeglossaries

\makeatletter
\newcommand*{\ifuseriempty}[3]{%
  \protected@edef\tmp{\glsentryuseri{#1}}%
  \expandafter\@ifmtarg\expandafter{\tmp}{#2}{#3}%
}
\makeatother

\renewcommand*{\glossaryentryfield}[5]{\bfseries{\glstarget{#1}{#2}}
& #3 \\
\ifuseriempty{#1}%
  {it &is very empty}%
  { &\glsentryuseri{#1}}%
\\%
}

\newglossaryentry{sample}{name=sample,%
  description={sample without user 1 key}}

\newglossaryentry{sample2}{name=sample2,%
  description={sample with user 1 key},
  user1={User1 Value}}

\begin{document}
\gls{sample}, \gls{sample2}.

\printglossaries
\end{document}

よろしくニコラ・タルボット

私の目的では、glossaryentryfield は次のようになっている必要があります。

\renewcommand*{\glossaryentryfield}[5]{\bfseries{\glstarget{#1}{#2}} & #3 \ \ifuseriempty{#1}% {}% { &\glsentryuseri{#1}\}% }

\newglossarystyle 環境でこれを使用したい場合は、パラメーター番号の前に # の代わりに ## を使用することを忘れないでください

于 2010-07-21T06:59:26.510 に答える