inputで「Package inputenc Error」

inputで「Package inputenc Error」

- y. umeno の投稿
返信数: 20
ちょっとサイズの大きなファイルを幾つかに分割して、
inputを利用した編集をしようとしているのですが、
「! Package inputenc Error: Unicode character ^^Z(U+001A)」
というエラーがでます。

以前は、このような使い方で問題はありませんでした。
2020年の10月末にTeXシステムを更新して、
以上のような編集をしようとしたらエラーになりました。

おそらくは、分割されたファイル末尾の「1A」が災い
しているのだろうと思い、バイナリーエディターで
「1A」を削除したらコンパイルできましたが、
単純にファイル分割するだけでコンパイル可能にすることは
できないのでしょうか?

使用OSはWindows10、エディターは秀丸を利用しています。

状況再現のため、このサイトの冒頭の文章で試してみました。

%%%% 元ファイル(test.tex) %%%%%%
\documentclass{jsarticle}
\begin{document}
TeX Wiki へようこそ!

TeX Wiki は,TeX,LaTeX,PDF,PostScript などに関する
情報を提供する,読者参加型ページです
\end{document}

%%%% input利用 (test2.tex) %%%%%%
% 冒頭の空行を含む1~2行目を、test1.tex として保存し、
% 下記ファイルを test2.tex とする。
\documentclass{jsarticle}
\begin{document}
\input{test1.tex}
TeX Wiki は,TeX,LaTeX,PDF,PostScript などに関する
情報を提供する,読者参加型ページです.
\end{document}

上記ファイル(test2.tex)をコンパイルするとエラーとなり、
ログファイルの主要部分は下記の通りです。

%%%%%%%%%%%%
This is e-pTeX, Version 3.14159265-p3.8.3-191112-2.6 (utf8.sjis) (TeX Live 2020/W32TeX) (preloaded format=platex 2020.10.30) 28 APR 2022 15:30
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**test2.tex
(./test2.tex
pLaTeX2e <2020-10-01>+1 (based on LaTeX2e <2020-10-01> patch level 2)
L3 programming layer <2020-10-27> xparse <2020-03-03>
(c:/Users/中略/pTeX/share/texmf-local/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2009/02/22 okumura
LaTeX Info: Redefining \rmfamily on input line 332.
LaTeX Info: Redefining \sffamily on input line 335.
LaTeX Info: Redefining \ttfamily on input line 338.
\symmincho=\mathgroup4

(中略)

! Package inputenc Error: Unicode character ^^Z (U+001A)
(inputenc) not set up for use with LaTeX.

See the inputenc package documentation for explanation.
Type H <return> for immediate help.
...

l.3 ^^Z

?
%%%%%%%%%%%

「TeX Wiki へようこそ!」は、バイナリーエディターでは、
下記のようになっていました。最後の「1A」を削除したら
コンパイルできました。

54 65 58 20 57 69 6B 69 20 82 D6 82 E6 82
A4 82 B1 82 BB 81 49 0D 0A 0D 0A 1A

「1A」を残したままにはできないのでしょうか?
よろしく、お願いいたします。

y. umeno への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
  • test2.tex のプリアンブルに \usepackage{docmute} と input で読み込む共通のプリアンブル部を宣言してください

    --- a/test2.tex
    +++ b/test2.tex
    @@ -2,6 +2,11 @@
    % 冒頭の空行を含む1~2行目を、test1.tex として保存し、
    % 下記ファイルを test2.tex とする。
    \documentclass{jsarticle}
    +%
    +% ここに input で読み込むものに記述されている
    +% プリアンブル部分を列挙する
    +%
    +\usepackage{docmute}
    \begin{document}
    \input{test1.tex}
    TeX Wiki は,TeX,LaTeX,PDF,PostScript などに関する
    
  • 上記のような \usepackage{document} を利用しない場合は、当方では別のエラーになります

    • test2 の \begin{document} の後に test1 の \documentclass{jsarticle} を読み込むためですが

    • 原因は、ログに以下のように TEXMF の jsarticle.cls ではなく TEXMFHOME と 思われるものが使われているのではと推測しています。

      c:/Users/中略/pTeX/share/texmf-local/tex/platex/jsclasses/jsarticle.cls

和田 勇 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
さっそくのご回答ありがとうございます。

docmute.sty は、初めて知りました。

こちらでインストールしたTeXシステムには含まれていなかったので
ダウンロードして試しましたが、結果は同じでした。

test1.texは、下記の空行を含む2行。
TeX Wiki へようこそ!

test2.texは、下記です。
\documentclass{jsarticle}
\usepackage{docmute}
\begin{document}
\input{test1.tex}
TeX Wiki は,TeX,LaTeX,PDF,PostScript などに関する
情報を提供する,読者参加型ページです.
\end{document}

test2.logを添付しました。

引き続き、よろしくお願いいたします。


y. umeno への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
  • ログから見るとお使いの latex 環境は新旧混沌としている感じです

    • こちらの環境 (windows 11 / TeXLive 2021)

      pLaTeX2e <2021-11-15> (based on LaTeX2e <2021-11-15> patch level 1)
      L3 programming layer <2022-02-24>
      (c:/texlive/2021/texmf-dist/tex/platex/jsclasses/jsarticle.cls
      Document Class: jsarticle 2021/06/28 jsclasses (okumura, texjporg)
      
    • y. umeno さんの環境

      pLaTeX2e <2020-10-01>+1 (based on LaTeX2e <2020-10-01> patch level 2)
      L3 programming layer <2020-10-27> xparse <2020-03-03>
      (c:/Users/中略/pTeX/share/texmf-local/tex/platex/jsclasses/jsarticle.cls
      Document Class: jsarticle 2009/02/22 okumura  ← とっても古すぎます
      
  • 対策

    • C:/Users/中略/pTeX 以下の latex 環境から 最新の texlive 環境に移行をお勧めします
    • 現在 texlive 2022 がリリースされているのでそれをインストールすると良いと思います

      参考URL : TeX Live/Windows

    • これで 1A の問題が解決できると良いですが

    • NG であればお手数ですが test1.tex を添付ファイルで提供お願いします。
      • 秀丸特有の問題かもしれませんので …
和田 勇 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
何となく予想はしていましたが、使用しているTeXが、
2020.10にインストールしたのに古いためかもしれません。

近年、TeXが猛スピードで進化し続けていることは承知しています。
昨年、長年、使い続けた角藤版も配給停止になりました・・・。

本格的なTeXLiveに移行しなければ、という思いはありましたが
システム自体を入れ替えるのは、
なかなか「おっくう」な部分があります。
今回の件を機に、最新版に入れ替えようとは思いますが、
当面は、末尾の「1A」を削除することで対応したいと思います。

システムを入れ替えた後の結果は、ここで改めて報告させていただきます。
ただ、少し時間がかかるかもしれません・・・

いろいろと、ありがとうございました。

参考までに、test1a.tex を添付しておきます。
y. umeno への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
  • 添付されたものはヘキサダンプしてもファイル末尾は 「1A」ではなかったのですが、は取り除いたもの? もしかしたら ダウンロードした時に取り除かれてしまうのかな?

  • ついでですので test1.tex からプリアンブルを削除されていましたが、 \usepackage{docmute} を使う場合 ...

    • input する元原稿の方のプリアンブルはそのままでよいです
    • docmute の機能?により input するファイルのプリアンブルは無視してくれます
    • → 例えば以下のようなことができると思います

      • section 単位でファイルを作成し、まとめたものを main.tex などとすれば
      • 纏めてコンパイルもできますが、個々の章単位でもコンパイルできます。

    <

    pre>   main.tex

  \documentclass{} 共通プリアンブル(含む \usepackage{docmute}) \begin{document} \input{secionA} ... \input{secionN}   \end{document}

  sectionA.tex から secionN.tex

  \documentclass{} 共通プリアンブル(\usepackage{docmute}含んでても良い) \begin{document} \section{あああ} 記述   \end{document}

和田 勇 への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
  • サンプルの表示が崩れていたので再投稿

    • main.tex
     \documentclass{}
     共通プリアンブル(含む \usepackage{docmute})
     \begin{document}
     \input{secionA}
      ... 
     \input{secionN}
     \end{document}
     

 - sectionA.tex から sectionN.tex

     \documentclass{}
     共通プリアンブル(\usepackage{docmute}含んでても良い)
     \begin{document}
     \section{あああ}
     記述 
     \end{document}
     
和田 勇 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
すみません、前の書込みで添付した text1a.tex は、
「1A」を除去したものでした。

あと、docmute をよく分からないままに書き込んでしまいました。
text1.tex を

%%%%%
\documentclass{jsarticle}
\usepackage{docmute}
\begin{document}
TeX Wiki へようこそ!

\end{document}
%%%%%%%

としたら、無事コンパイルできました。

これまで、input や include を利用するときは
テキストの一部だけ取り出していました。
docmute を利用するときは、それぞれの
ファイルが、TeX として完結したファイルで
ある必要があるのですね。

ありがとうございました。


y. umeno への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
補足ですが、コマンドプロンプトなどで「texdoc docmute」とか、「texdoc -l docmute」でマニュアルを読むと、この他にも「standalone」パッケージや「combine」クラスがあるようです。


和田 勇 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
TeXLiveへの移行をお勧めいただいたので、
なんだかおっくうな面もありましたが、
思い切ってやってみました。

ネットワークインストーラの利用が推奨されているようなので、
それにならいました。TeXWikiでは「1~2時間ほどかかる」と
書かれていますが、私のネット環境では、ダウンロードして
インストールが完了するまでに6時間以上かかりました。

さっそく試してみたら、コンパイルがやたらと早い!
これだと、ファイル分割する必要も無いように感じました。
ただ、「eclarith.sty」が見当たらないというエラーがでました。
旧システムに含まれるファイルをコピーして対応しました。

「1A」の件は、TeXLive2022でも同じでした。



y. umeno への返信

Re: inputで「Package inputenc Error」

- 帯田 木偶太 の投稿
スレッドの趣旨からはずれて申し訳ないですが‥

》 さっそく試してみたら、コンパイルがやたらと早い!
》 これだと、ファイル分割する必要も無いように感じました。

\input を利用してのソースの分割は、タイプセット時間の短縮を期待して
行なうものではなかろうと思います。
        ※  \include と \includeonly を組み合わせて、読込むファイルを
            限定する場合は別ですが。
理屈的には、ファイルをオープンするオーバーヘッドが生じる分、むしろ
時間がかかりそうな気がします。
帯田 木偶太 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
ちょっと、言葉足らずでした。

今のところのファイルサイズだと、分割しなくても
我慢できるレベルだった、というだけでした。
サイズが大きくなれば、分割必至と思います。


y. umeno への返信

Re: inputで「Package inputenc Error」

- 帯田 木偶太 の投稿
どのコメントあての返信にしようか迷いましたが、
気になる部分が最初のログで見えているので冒頭にぶら下げます。
例によって最新の TeX のことをよくわからないまま書いていますので、
また見当違いの書き込みで混乱を招きやしないかと危惧しつつですが‥

test1.tex が、秀丸エディタで新規作成・保存したものであるなら、
秀丸エディタの設定で、ファイル保存時に EOF を(自動で)付加する
設定になっていないか、確認してみてはいかがでしょう。

また、秀丸エディタ以外のツールで(中身のあるなしを問わず)新規作成のうえ
秀丸エディタで編集・保存したのなら、当該のツールの設定を見直して
EOF が付かないようにするか、あるいは秀丸エディタで EOF を
自動で削除するような設定項目があればそれをオンにすると云うことは
できないでしょうか。

ちなみに EOF(end of file)というのは、十六進で 0x1A のバイトで、
TeX の流儀では ^^Z と表現され、他にファイル終端コードとか、
ctrl-Z というような呼び方もされるものです。
※    秀丸エディタの設定項目としてどのように表現されているかは存じません。
帯田 木偶太 への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
和田 勇 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
秀丸エディターで、確か、
末尾の制御文字を「つける・つけない」を
制御できたはずだということは記憶していましたが、
その設定をどこでやるのだったか覚えていませんでした。
ご指摘のサイトにより、

[その他]>[ファイルタイプ別の設定]>[その他]>[保存・読み込み]

の箇所で、「EOF制御文字を付ける」のチェックを
はずして保存したら、docmute を利用することなく、
冒頭で提示したファイルのままでコンパイルできました。

おかげさまで、解決できました。

皆様、ありがとうございました。



y. umeno への返信

Re: inputで「Package inputenc Error」

- 帯田 木偶太 の投稿
余談になりますが、EOF が付いてしまうようなツールでファイルを作る場合でも、
        \endinput
という行(最後に行末コードが必要)でファイルを終わらせるようにすれば、
EOF によるエラーは回避できると思います。
帯田 木偶太 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
確認しました。

test1.tex を

%%%%%%%
TeX Wiki へようこそ!

\endinput
%%%%%%

だけにして、最後に「EOF」をつける設定で保存し
docmuteを外した test2.tex でコンパイルしたら、
うまくいきました。

それにしても、いろいろな方法があるものです。
ありがとうございました。

y. umeno への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
自己レスです。

「以前は、この使い方で問題がなかった」と書いたのですが、
ひょっとしてと思って以前のファイルを調べてみたら
末尾に「1A」はありませんでした。
何かのときに、あやまってエディターの設定を
「1A」を付加する設定にしてしまったのが原因のようです。
お騒がせしてしまいました。

あと、この関連で、ファイルから「1A」を除去するという
「マルチctrl Z除去 DELCZ V.25」という1999年のツールが
Vector にありましたが、Windows10では動作しませんでした。


y. umeno への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
  • 「マルチctrl Z除去 DELCZ V.25」の代替手段

    • この種の変更は perl や sed pytoh ruby などを使うと便利です
    • perl は texlive をインストールや tlmgr などで利用するので windows 環境では C:\texlive\2022\tlpkg\tlperl\bin\perl.exe が導入されていますのでこれを PATH に追加すれば良い

    • 以下は、コマンドプロンプトで検証した手順です

      • perl がインストールしていない場合

        set PATH=C:\texlive\2022\tlpkg\tlperl\bin;%PATH%
        
      • perl ワンライナーで変更

        perl -i.backup -np -e s/\x1a// file1.tex
        
        • file1.tex を更新し、かつ file1.tex.backup というバックアップファイルを作成
        • 「-np」の影響かと思いますがファイル末に改行が入ってしまう :-(
    • 複数ファイルがある時は file1.tex の後 file2.tex … と指定
    • いろいろなディレクトリに 1A がある場合は rg (ripgrep) というツールを使うと便利
      • ripgrep は scoop などでインストールできる
  • 以下のようにするとカレントディレクトリ以下 1A が入っている情報が得られる

    rg \u001A
    
  • 上記のうち ファイルパス を抽出するには以下のように 「-l」オプションを利用する

    rg -l \u001A
    
和田 勇 への返信

Re: inputで「Package inputenc Error」

- y. umeno の投稿
いろいろな情報、ありがとうございます。
ただ、いずれのソフトも使ったことがありません・・・。

Web検索では、「EOF」は、どうやらくせ者であるようで、
いろいろな問題があるようですね。
制御コードの削除ということでは、バイナリーエディターで
「Stirling」というものがあるようです。
https://www.vector.co.jp/soft/win95/util/se079072.html

1999年に開発が終了したようですが、現在でも定番ソフトとして
利用されているようで、「1A」を削除する際に利用しました。
Windowsの「Powershell」でもできそうに思えるのですが、
よく分かりませんでした。

y. umeno への返信

Re: inputで「Package inputenc Error」

- 和田 勇 の投稿
  • 前回お伝えしたものはコマンドプロンプトでは機能しますが、 powershell では想定通りの動かないようです :-(

    以下に Windows Termibal(PowerShell) で試した例です

    • Path の追加

       $ENV:Path="C:\texlive\2022\tlpkg\tlperl\bin;"+$ENV:Path
       
    • perl の確認
         gcm perl
         
  • トライ
         perl -i.backup -np -e s/\x1a// file1.tex
         

  - 結果

     Can't open perl script ".backup": No such file or directory