私が確認に使った環境は
macOS 10.13.6上に
HomebrewでインストールしたTeXLive 2018のupbibtex
upBibTeX 0.99d-j0.33-u1.23 (utf8.uptex) (TeX Live 2018)
および、同じコンピュータ上で
texlive-20180414-source.tar.xzをビルドしたものに含まれるupbibtex
(バージョン同じ)
です。
重複がないかどうかは確認したつもりですが、報告済み・修正済みでしたら申し訳ありません。
(少なくとも1.23で修正された問題とは別であるはずです。)
upBibTeXのスタイルファイル(.bst)において、
特定の文字列に対して特定のパラメータでsubstring$を呼び出し、
その結果に対して別の特定のパラメータでsubstring$を呼び出すと、
結果が文字化けします。
さらにその結果にまた別のパラメータでsubstring$を呼び出すと、
upBibTeXがフリーズします。
特定の文字列・パラメータを具体的にいうと、
(何らかの文字)(半角文字)(全角文字)
という文字列(実用的(?)な例でいうと「第1回」)と、
それを左から1文字ずつ切り落とす操作を行うパラメータ
(例えば
"第1回" #4 #200 substring$ #2 #200 substring$
)です。
(途中の値を変数においても再現するため、文字を数えるなどの処理を書くときに困ります。)
例としてaux, bib, bstの3ファイルを示します。
% a.aux
\bibstyle{a}
\bibdata{./a}
\citation{a}
% a.bib
@a{a,}
% a.bst
ENTRY{}{}{}
FUNCTION {a}{}
READ
STRINGS{t}
FUNCTION {begin.bib}
{
"11あ" #2 #200 substring$ #2 #200 substring$ warning$
"11あ" #2 #200 substring$ #2 #200 substring$ #4 #200 substring$ warning$
}
EXECUTE {begin.bib}
%%%%%%%%%%
ここで、1つ目の行の出力は文字化けしますが、
FUNCTION {begin.bib}
{
"11あ" #2 #200 substring$ #2 #200 substring$ write$ newline$
}
などと書き換えてバイナリエディタで確認すると、出力内容が
e3 81 81 82
であることがわかります。
UTF-8で「あ」は
e3 81 82ですから、2バイト目が2回出力されているようです。
そして、pTeX Liveのビルド途中で生成されるC言語のソースファイルをprintfデバッグした結果、
次の動作を確認しました。
(0)
str_pool[]: 文字列プール(スタック)
pool_ptr: ↑のトップ
str_start[]: 文字列プール内の各文字列の開始位置を表す配列
str_ptr: ↑のトップ
multibytelen(first_byte):
first_byteがシングルバイト文字であれば1を返す
first_byteがマルチバイト文字の1バイト目であればその文字のバイト数を返す
first_byteがマルチバイト文字の2バイト目以降であれば-2を返す
そのほかの場合-1を返す
前のsubstring$の結果をそのまま渡すと、
その値がstr_poolのトップに来る。
(1) substring$の冒頭で引数を取り出す。
最初の引数は文字列であるが、このとき、次の処理が行われる。
(a). str_ptr-- (str_startをpop)
(b). pool_ptr = str_start[str_ptr](str_poolにstr_startのトップを代入)
(2) 計算する。
sp_ptr: 指定されたsubstringのstr_poolにおける開始バイト
sp_end: 指定されたsubstringのstr_poolにおける終了バイト+1
(3) substring$の最後で出力の文字列を一文字ずつ書き込む。
書き込みのアルゴリズムは以下の通り
while (sp_ptr < sp_end)
str_pool[pool_ptr++] = str_pool[sp_ptr];
if multibytelen(str_pool[sp_ptr]) > 1 then
str_pool[pool_ptr++] = str_pool[sp_ptr+1];
if multibytelen(str_pool[sp_ptr]) > 2 then
str_pool[pool_ptr++] = str_pool[sp_ptr+2];
if multibytelen(str_pool[sp_ptr]) > 3 then
str_pool[pool_ptr++] = str_pool[sp_ptr+3];
if multibytelen(str_pool[sp_ptr]) > 0 then
sp_ptr := sp_ptr + multibytelen(str_pool[sp_ptr])
2回目のsubstring$のとき、
「前のsubstring$の結果をそのまま渡すと、
その値がstr_poolのトップに来る」ため
(3)では
□123
というデータをin placeで
123空
にすることになります。しかし、このアルゴリズムではそれができません。
まず
str_pool[pool_ptr++] = str_pool[sp_ptr];
if multibytelen(str_pool[sp_ptr]) > 1 then
str_pool[pool_ptr++] = str_pool[sp_ptr+1];
を実行するところまでは行きますが、この結果
__↓← pool_str
1223
_↑← sp_ptr
と、str_pool[sp_ptr]がマルチバイト文字の2バイト目の文字になってしまうため
if multibytelen(str_pool[sp_ptr]) > 2 then
str_pool[pool_ptr++] = str_pool[sp_ptr+2];
if multibytelen(str_pool[sp_ptr]) > 3 then
str_pool[pool_ptr++] = str_pool[sp_ptr+3];
if multibytelen(str_pool[sp_ptr]) > 0 then
sp_ptr := sp_ptr + multibytelen(str_pool[sp_ptr])
までを素通りして
else
sp_ptr := sp_ptr + 1
に行ってしまいます。すると
__↓← pool_str
1223
__↑← sp_ptr
という状況になって、結局
1223
という出力になります。
(1)と(3)のどちらかが間違っているのは確かだと思いますが、
私にはどちらが正しいか判断できませんでした。
・文字をシフトさせる処理をin placeで行うという速度低下につながるメモリ利用
・(引数の値とstr_poolのトップの値が無関係である場合があるにも関わらず)
文字列プールstr_poolのトップを削除するという乱暴な処理
などの点から(1)の方がかなり怪しいと思います。
しかし、修正が楽なのは(3)だと感じたので、試しにパッチを書いてみました。
/* ---------- */
--- a/texk/web2c/uptexdir/upbibtex.ch 2018-02-25 09:31:25.000000000 +0900
+++ b/texk/web2c/uptexdir/upbibtex.ch 2018-09-04 14:51:37.000000000 +0900
@@ -232,6 +232,21 @@
@z
@x
+@<|execute_fn|({\.{substring\$}})@>=
+procedure x_substring;
+label exit;
+var tps,tpe:pool_pointer; {temporary pointer}
+begin
+@y
+@<|execute_fn|({\.{substring\$}})@>=
+procedure x_substring;
+label exit;
+var tps,tpe:pool_pointer; {temporary pointer}
+ mblen_top:integer; {multibyte_length of the character at the top of copy source}
+begin
+@z
+
+@x
{ 2 bytes Kanji code break check }
tps:=str_start[pop_lit3];
while (tps < sp_ptr) do begin
@@ -299,14 +314,15 @@
end;
@y
append_char (str_pool[sp_ptr]);
- if multibytelen(str_pool[sp_ptr]) > 1 then
+ mblen_top := multibytelen(str_pool[sp_ptr]);
+ if mblen_top > 1 then
append_char (str_pool[sp_ptr+1]);
- if multibytelen(str_pool[sp_ptr]) > 2 then
+ if mblen_top > 2 then
append_char (str_pool[sp_ptr+2]);
- if multibytelen(str_pool[sp_ptr]) > 3 then
+ if mblen_top > 3 then
append_char (str_pool[sp_ptr+3]);
- if multibytelen(str_pool[sp_ptr]) > 0 then
- sp_ptr := sp_ptr + multibytelen(str_pool[sp_ptr])
+ if mblen_top > 0 then
+ sp_ptr := sp_ptr + mblen_top
else
incr(sp_ptr);
@z
/* ---------- */
これが適切なパッチか判断して、適切であれば修正して反映などしていただけるとありがたいと思うのですが、
これはどこに言えば良いのでしょうか。
よろしくお願いいたします。
ご質問はこちらへ
質問用フォーラムです。ご質問の前に質問のしかたをご覧ください。
Windows 用 gs-9.25 と gsview-5.0 について
- Akira Kakuto の投稿
gs-9.24 には 2, 3 の不具合があったので,gs-9.25 が近いうちに
release されると思います。
まだ,gs-9.25 は release されていませんが,9.25RC1 を作成して
試して見ましたので,gsview-5.0 と共に使用する場合の注意点を
前もって述べておきたいと思います。
私がビルドした windows 用 gs-9.25 を gsview-5.0 上で使用する場合,
Options -- Safer をチェックしておくと,使用不能になります。私が
ビルドしたものは本家のバイナリと違って,iccprofiles をバイナリに
含んでいません。従ってフルパスで与えられた iccprofiles ディレクト
リからファイルを読む必要があります。gs-9.23 までは問題なかったの
ですが,gs-9.24 から -dSAFER に関するコードが大きく書き換えられ
たのが原因と考えられます。実際には,gs_init.ps において,-dSAFER
の場合にも iccprofiles ディレクトリは読み取り可能に設定してある
ので,通常のコマンドラインでは -dSAFER オプションが問題なく使用
できますが,gsview-5.0 は古すぎるので, Options -- Safer が新しい
ghostscript に対応していないと思われます。 ghostscript の option
としての -dSAFER は上に述べたように問題ありませんから,gsview-5.0
の設定で,Options -- Safer のチェックをはずして,代わりに
Options -- Advanced Configure... -- Ghostscript Options: に
-dSAFER を書き加えて下さい。
examples/annots.pdf は,gswin32 で表示すると問題なく表示できます
が,gsview-5.0 を使って表示すると,まともに表示できません。これは
以前からの現象です(例えば gs-9.23)。このことも,gsview-5.0 が古す
ぎて,新しい ghostscript に対応していないことを示しています。
release されると思います。
まだ,gs-9.25 は release されていませんが,9.25RC1 を作成して
試して見ましたので,gsview-5.0 と共に使用する場合の注意点を
前もって述べておきたいと思います。
私がビルドした windows 用 gs-9.25 を gsview-5.0 上で使用する場合,
Options -- Safer をチェックしておくと,使用不能になります。私が
ビルドしたものは本家のバイナリと違って,iccprofiles をバイナリに
含んでいません。従ってフルパスで与えられた iccprofiles ディレクト
リからファイルを読む必要があります。gs-9.23 までは問題なかったの
ですが,gs-9.24 から -dSAFER に関するコードが大きく書き換えられ
たのが原因と考えられます。実際には,gs_init.ps において,-dSAFER
の場合にも iccprofiles ディレクトリは読み取り可能に設定してある
ので,通常のコマンドラインでは -dSAFER オプションが問題なく使用
できますが,gsview-5.0 は古すぎるので, Options -- Safer が新しい
ghostscript に対応していないと思われます。 ghostscript の option
としての -dSAFER は上に述べたように問題ありませんから,gsview-5.0
の設定で,Options -- Safer のチェックをはずして,代わりに
Options -- Advanced Configure... -- Ghostscript Options: に
-dSAFER を書き加えて下さい。
examples/annots.pdf は,gswin32 で表示すると問題なく表示できます
が,gsview-5.0 を使って表示すると,まともに表示できません。これは
以前からの現象です(例えば gs-9.23)。このことも,gsview-5.0 が古す
ぎて,新しい ghostscript に対応していないことを示しています。
このトピックを読む
(現在の返信数: 1)
Luatex + Bxjscls + ja=standardを使うと自作sty内で一部の命令を再定義できない
- Nakata Masato の投稿
MacTeX の最新版(2018/04/17)を macOS Sierra 10.12.6 で使っています.以前のバージョン(正確には覚えていないが TeXLive 2017)ではこのようなエラーは出ませんでした.
\barを\overlineに再定義しようと思い,同じディレクトリ内に次のようなファイルを用意しました:
%a.tex
\documentclass[lualatex,a4paper,ja=standard]{bxjsarticle}
\usepackage{hoge}
\begin{document}
Hello, TeX!
\end{document}
%hoge.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hoge}[2018/09/12 by Naughie]
\renewcommand{\bar}[1]{\overline{#1}}
そしてこれらのファイルを
$ lualatex -halt-on-error -interaction=nonstopmode -file-line-error a.tex
でタイプセットしようとしたところ,「\barがすでに定義されている」というエラーが出てしまいました:
This is LuaTeX, Version 1.07.0 (TeX Live 2018)
restricted system commands enabled.
(./a.tex
LaTeX2e <2018-04-01> patch level 5
(using write cache: /Users/me/Library/texlive/2018/texmf-var/luatex-cache/
generic)(using read cache: /usr/local/texlive/2018/texmf-var/luatex-cache/gener
ic /Users/me/Library/texlive/2018/texmf-var/luatex-cache/generic)
luaotfload | main : initialization completed in 0.512 seconds
(/usr/local/texlive/texmf-local/tex/latex/bxjscls/bxjsarticle.cls
Document Class: bxjsarticle 2018/02/04 v1.7c BXJS document classes
(/usr/local/texlive/2018/texmf-dist/tex/latex/tools/calc.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/local/texlive/texmf-local/tex/latex/bxjscls/bxjscompat.sty)
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ifpdf.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/type1cm/type1cm.sty)
LaTeX Font Warning: Font shape `TU/cmr/m/n' undefined
(Font) using `TU/lmr/m/n' instead on input line 913.
(load luc: /Users/me/Library/texlive/2018/texmf-var/luatex-cache/generic/f
onts/otl/lmroman10-regular.luc)
(/usr/local/texlive/2018/texmf-dist/tex/latex/geometry/geometry.sty
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ifvtex.sty)
(/usr/local/texlive/2018/texmf-dist/tex/generic/ifxetex/ifxetex.sty))
(/usr/local/texlive/texmf-local/tex/latex/bxjscls/bxjsja-standard.def
(/usr/local/texlive/texmf-local/tex/latex/bxjscls/bxjsja-minimal.def)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja.sty
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja-core.sty
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexbase/luatexbase.sty
(/usr/local/texlive/2018/texmf-dist/tex/luatex/ctablestack/ctablestack.sty))
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ifluatex.sty))
(/usr/local/texlive/2018/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/usr/local/texlive/2018/texmf-dist/tex/generic/xkeyval/xkeyval.tex
(/usr/local/texlive/2018/texmf-dist/tex/generic/xkeyval/xkvutils.tex)))
(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/atbegshi.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/etoolbox/etoolbox.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/everyhook/everyhook.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/svn-prov/svn-prov.sty))(load cach
e: /Users/me/Library/texlive/2018/texmf-var/luatexja/ltj-cid-auto-adobe-ja
pan1.luc)(load cache: /Users/me/Library/texlive/2018/texmf-var/luatexja/ex
tra_lmroman10-regular.luc)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/ltj-base.sty)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/ltj-latex.sty
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/tuenc.def)
(/usr/local/texlive/2018/texmf-dist/tex/latex/ms/everysel.sty)
ABD: EverySelectfont initializing macros)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty(lo
ad luc: /Users/me/Library/texlive/2018/texmf-var/luatex-cache/generic/font
s/otl/ipaexm.luc)(load cache: /Users/me/Library/texlive/2018/texmf-var/lua
texja/extra_ipaexmincho.luc)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua))
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/filehook/filehook.sty)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/patches/lltjp-geometry.
sty)))
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/luatexja-compat.sty(loa
d cache: /Users/me/Library/texlive/2018/texmf-var/luatexja/ltj-jisx0208.lu
c)))
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspe
c.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3kernel/l3pdfmode.def)))
(/usr/local/texlive/2018/texmf-dist/tex/latex/fontspec/fontspec.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/fontenc.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/tuenc.def))
(/usr/local/texlive/2018/texmf-dist/tex/latex/fontspec/fontspec.cfg)(load luc:
/Users/me/Library/texlive/2018/texmf-var/luatex-cache/generic/fonts/otl/lm
roman10-bold.luc)(load luc: /Users/me/Library/texlive/2018/texmf-var/luate
x-cache/generic/fonts/otl/ipaexg.luc)(load cache: /Users/me/Library/texliv
e/2018/texmf-var/luatexja/extra_ipaexgothic.luc)(load luc: /Users/me/Libra
ry/texlive/2018/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-italic.luc)
LaTeX Font Warning: Font shape `JT3/mc/m/it' undefined
(Font) using `JT3/mc/m/n' instead on input line 3764.
LaTeX Font Warning: Font shape `JY3/mc/m/it' undefined
(Font) using `JY3/mc/m/n' instead on input line 3764.
))
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/patches/lltjp-fontspec.
sty)
(/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspe
c-26h.sty)))) (./hoge.sty) (./a.aux)
*geometry* driver: auto-detecting
*geometry* detected driver: luatex
ABD: EverySelectfont initializing macros
./a.tex:3: LaTeX Error: Command `\bar' already defined.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.3 \begin{document}
2304 words of node memory still in use:
6 hlist, 4 rule, 1 dir, 24 kern, 811 attribute, 52 glue_spec, 49 attribute_l
ist, 4 if_stack, 1 write, 9 user_defined nodes
avail lists: 1:5,2:273,3:3,4:4,5:7,7:6,8:4,9:4
./a.tex:3: ==> Fatal error occurred, no output PDF file produced!
Transcript written on a.log.
さらに次のようなことも試しましたがどれも同じエラーになりました:
- 「\renewcommand{\bar}[1]{\overline{#1}}」を「\def\bar#1{\overline{#1}}」「\renewcommand{\bar}{\overline}」「\let\bar\overline」「\let\bar\relax\newcommand{\bar}[1]{\overline{#1}}」「\let\bar\relax\def\bar#1{\overline{#1}}」等に変える.
しかし以下のいずれかをすればエラーは起きません:
- \renewcommand を,hoge.sty ではなく a.tex に直接書く;
- ドキュメントクラスのオプションから ja=standard を消す;
- ドキュメントクラスのエンジンを lualatex から uplatex + dvipdfmx に変える;
- ドキュメントクラスを bxjsarticle から ltjsarticle や article に変える;
また,\bar を \hat に変えても同様のエラーになりますが,自分で \newcommand した命令を \renewcommand してもエラーにはなりません.他の命令の \renewcommand でもエラーになるかは確認していません.
個人的には些細なことであまり問題はないのですが,一体なぜこうなるでしょうか?
どうすればエラーを避けて \def\bar\overline とできますか?
このトピックを読む
(現在の返信数: 3)
lualatexで不具合
- 浮亭 夢介 の投稿
\documentclass{ltjsarticle}
\begin{document}
あいうえお
\end{document}
上のソースを実行しますと,
以下のエラーが出ます.そこで
フォントキャッシュを再生成しましたが
同じ結果になりました.
対処法をお願いします.
(キャッシュ再生は以下)
C:\w32tex\share\ctxdir\luatex-cache\generic\fonts/otf\
C:\w32tex\share\ctxdir\luatex-cache\generic\fnames\
を削除した後
luaotfload-tool -u -vvv
コンパイル状況:
-----------------------------------------
C:\Users\Desktop>lualatex foo
This is LuaTeX, Version 1.08.0 (TeX Live 2018/W32TeX)
system commands enabled.
(./foo.tex
LaTeX2e <2018-04-01> patch level 5
(using cache: c:/w32tex/share/ctxdir/luatex-cache/generic)...xmf-dist/tex/luate
x/luaotfload/fontloader-2017-02-11.lua:217: table index is nil
stack traceback:
...xmf-dist/tex/luatex/luaotfload/fontloader-2017-02-11.lua:217: in main chunk
[C]: in function 'require'
...are/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua:579: in upvalue 'i
nit_main'
...are/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua:768: in function '
luaotfload-init.lua.main'
...are/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua:274: in field 'mai
n'
[\directlua]:1: in main chunk.
<everyjob> ...ring \\def\string \\encodingdefault{OT1}')end }
\let \f@encoding \encoding...
l.1
\documentclass{ltjsarticle}
?
-----------------------------------------
\begin{document}
あいうえお
\end{document}
上のソースを実行しますと,
以下のエラーが出ます.そこで
フォントキャッシュを再生成しましたが
同じ結果になりました.
対処法をお願いします.
(キャッシュ再生は以下)
C:\w32tex\share\ctxdir\luatex-cache\generic\fonts/otf\
C:\w32tex\share\ctxdir\luatex-cache\generic\fnames\
を削除した後
luaotfload-tool -u -vvv
コンパイル状況:
-----------------------------------------
C:\Users\Desktop>lualatex foo
This is LuaTeX, Version 1.08.0 (TeX Live 2018/W32TeX)
system commands enabled.
(./foo.tex
LaTeX2e <2018-04-01> patch level 5
(using cache: c:/w32tex/share/ctxdir/luatex-cache/generic)...xmf-dist/tex/luate
x/luaotfload/fontloader-2017-02-11.lua:217: table index is nil
stack traceback:
...xmf-dist/tex/luatex/luaotfload/fontloader-2017-02-11.lua:217: in main chunk
[C]: in function 'require'
...are/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua:579: in upvalue 'i
nit_main'
...are/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua:768: in function '
luaotfload-init.lua.main'
...are/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua:274: in field 'mai
n'
[\directlua]:1: in main chunk.
<everyjob> ...ring \\def\string \\encodingdefault{OT1}')end }
\let \f@encoding \encoding...
l.1
\documentclass{ltjsarticle}
?
-----------------------------------------
このトピックを読む
(現在の返信数: 3)
PythonTeXによる試験問題の自動作成を目指して--pycode内でのTeXコマンドについて--
- t iida の投稿
PythonTeXを試験問題を作成するために使っております.まだ未完成ですが,2次関数をLaTeX内で自動作成することを目指しています.下のほうにpycodeをコピーしておきます.もっと良い方法があればよかったのですが,現在の私の力量ではこれが限界でした.さてpycodeに関しての質問です.
1つ目:下にある
print('\\begin{align*}')
---
print('\\end{align*}')
だと改行されてしまうので, これを改行しないようにしたいのです.
そこで, \begin{align*}を$に置き換えてみたのですがエラーが発生してしまいました.改行しないようにするにはどうしたらよいでしょうか?
2つ目:下から2行目がright = ()になっていますが,本当は四角の枠を入れたいと考えています.そこで, \fbox{~\COUNT~}などのTeXコマンドを入力したのですがエラーが発生してしまいました.そこでpycode内でTeXコマンドを機能させるにはどのようにしたらよいのでしょうか?
なお,2次関数の平方完成に関する計算問題を考えていたのでenumerate環境内を想定しております.以上です.どうぞご協力をお願いいたします.
--------------pycode----------------
\begin{pycode}
import random
import fractions
import os
os.getcwd()
from sympy import sympify
from sympy import Symbol
from sympy import *
from sympy import latex
from fractions import Fraction
from sympy import init_session
coeff1a1 = random.randrange(-5,6,2)
coeff1b1 = random.randrange(-5,6,1)
coeff1c1 = random.randrange(-5,6,1)
coeff1a2 = random.randrange(1,10,1)
coeff1b2 = random.randrange(1,10,1)
coeff1c2 = random.randrange(1,10,1)
x = Symbol('x')
expr1 = coeff1a1*x*x+x*coeff1b1+coeff1c1
print('\\begin{align*}')
for func in [sin(x)]:
left = expr1
right = ()
eq = latex(left) + '=' + latex(right) + '\\\\'
print(eq.replace('d', '\\rmd '))
print('\\end{align*}')
\end{pycode}
----------------------------------------
このトピックを読む
(現在の返信数: 1)
pTeX のマニュアル(試作版)
- aminophen の投稿
日本語 TeX 開発コミュニティで「pTeX のマニュアル」を作るプロジェクト
https://github.com/texjporg/ptex-manual
の最初の版を CTAN にアップロードしました。
昨年(2017 年)4 月から数人で作り始めていたのですが,大変遅くなりました。
手始めに「pTeX のプリミティブ一覧」を作るところから始めて,一応それっぽい形にはなっていますが,まだ
・記述が不十分な部分
・マニュアルに書こうとして調べてみると,pTeX の挙動がおかしい部分
(\jcharwidowpenalty が効いたり効かなかったり)
等いろいろありますので,ご意見等お寄せください。
# pTeX のプリミティブ一覧はアスキーのサイト(閉鎖中;今は Internet Archive にある)にも
# 載ってはいたのですが,なぜか幾つか漏れていたので,今回ようやく文書化できました。
https://github.com/texjporg/ptex-manual
の最初の版を CTAN にアップロードしました。
昨年(2017 年)4 月から数人で作り始めていたのですが,大変遅くなりました。
手始めに「pTeX のプリミティブ一覧」を作るところから始めて,一応それっぽい形にはなっていますが,まだ
・記述が不十分な部分
・マニュアルに書こうとして調べてみると,pTeX の挙動がおかしい部分
(\jcharwidowpenalty が効いたり効かなかったり)
等いろいろありますので,ご意見等お寄せください。
# pTeX のプリミティブ一覧はアスキーのサイト(閉鎖中;今は Internet Archive にある)にも
# 載ってはいたのですが,なぜか幾つか漏れていたので,今回ようやく文書化できました。
このトピックを読む
(現在の返信数: 0)
udline パッケージのダウンロードについて
- KAWAMOTO Takeshi の投稿
Windows 10 で pLaTeX2e を使っている者です.
以前使用していたPCが故障で初期化しなければならなくなり,再度すべての LaTeX に関するファイルなどを入れ直しているのですが,以前 udline パッケージを導入したサイトが閉鎖したか何かで udline パッケージを導入できないでいます.
また,https://github.com/ychubachi/kakenhi-2013-kiban-c/blob/master/udline.sty にあると聞いたのですがあまりその辺に明るくないものでどのようにそれをダウンロードすればよいのかわかりません.
別のサイトがあるならばそのサイトを,無いならば前述のサイトからダウンロードする方法をご教示くださると助かります.
このトピックを読む
(現在の返信数: 8)
parboxを用いたときに箱の中の行にも行番号を表示させる方法,parbox同士の間隔
- 石丸 将司 の投稿
①lineno.styを用いて行番号を各行につけたいと考えていますが,parbox内で複数行文字が入力されていても,全体で1行として扱われてしまいます.何か解決方法はあるでしょうか.
②parboxを用いて定義した\daihogeというコマンドですが,このdaihogeのブロック同士の間が狭く,これをbaselineskipにする方法を探しています.parboxの定義を調べて,定義しなおせばよいのではと思ったのですが,parboxの定義がどこに書いてあるか,わかりませんでした.
よろしくお願いいたします.
-------------
\documentclass{jsarticle}
\usepackage{lineno}
\linenumbers
\newcounter{daihogen}
\renewcommand{\thedaihogen}{\arabic{daihogen}}
\newcommand{\daihogen}{\noindent 第\refstepcounter{daihogen}\thedaihogen}
\def\daihoge#1{\daihogen\quad\parbox[t]{26zw}{#1}}
\begin{document}
\daihoge{あいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそ}
\daihoge{たちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほ}
\daihoge{まみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろ}
\end{document}
②parboxを用いて定義した\daihogeというコマンドですが,このdaihogeのブロック同士の間が狭く,これをbaselineskipにする方法を探しています.parboxの定義を調べて,定義しなおせばよいのではと思ったのですが,parboxの定義がどこに書いてあるか,わかりませんでした.
よろしくお願いいたします.
-------------
\documentclass{jsarticle}
\usepackage{lineno}
\linenumbers
\newcounter{daihogen}
\renewcommand{\thedaihogen}{\arabic{daihogen}}
\newcommand{\daihogen}{\noindent 第\refstepcounter{daihogen}\thedaihogen}
\def\daihoge#1{\daihogen\quad\parbox[t]{26zw}{#1}}
\begin{document}
\daihoge{あいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそあいうえおかきくけこさしすせそ}
\daihoge{たちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほたちつてとなにぬねのはひふへほ}
\daihoge{まみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろまみむめもやいゆえよらりるれろ}
\end{document}
このトピックを読む
(現在の返信数: 4)
macOS付属のTimesフォントをdvipdfmxで使用する方法
- SHIMAYOSHI Takao の投稿
Emacs+YaTeXでC-c t jでタイプセットできない
- O K の投稿
初めて投稿いたします。
当方macOS High Sierra 10.13.6で、TeX Live 2016を使用しています。
Emacs+YaTeXでC-c t jでタイプセットしたいのですが、
以下のようなメッセージが現れ、うまくいきません。
Call `platex main.tex'
/bin/bash: platex: command not found
TeXShopを用いたり、ターミナルからplatex main.texと打てば
タイプセットできております。
また、Emacs+YaTeXでC-c t pでpdf表示はうまくいきます。
パスの設定に問題があるという気がするのですが、
具体的な解決策がわからず困っております。
どなたか教えていただけると幸いです。
どうぞよろしくお願いいたします。
当方macOS High Sierra 10.13.6で、TeX Live 2016を使用しています。
Emacs+YaTeXでC-c t jでタイプセットしたいのですが、
以下のようなメッセージが現れ、うまくいきません。
Call `platex main.tex'
/bin/bash: platex: command not found
TeXShopを用いたり、ターミナルからplatex main.texと打てば
タイプセットできております。
また、Emacs+YaTeXでC-c t pでpdf表示はうまくいきます。
パスの設定に問題があるという気がするのですが、
具体的な解決策がわからず困っております。
どなたか教えていただけると幸いです。
どうぞよろしくお願いいたします。
このトピックを読む
(現在の返信数: 3)